{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "ccefc5da",
   "metadata": {},
   "outputs": [],
   "source": [
    "# importing libaries\n",
    "\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import scipy.io"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "f1e9bd2d",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Define the RNN model\n",
    "class RNN(nn.Module):\n",
    "    def __init__(self, input_size, hidden_size, output_size):\n",
    "        super(RNN, self).__init__()\n",
    "\n",
    "        self.hidden_size = hidden_size\n",
    "\n",
    "        self.rnn = nn.RNN(input_size, hidden_size, batch_first=True)\n",
    "        self.fc = nn.Linear(hidden_size, output_size)\n",
    "\n",
    "    def forward(self, x, hidden):\n",
    "        output, hidden = self.rnn(x, hidden)\n",
    "        output = self.fc(output)\n",
    "        return output, hidden\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "ab942109",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Toy problem data\n",
    "input_size = 256  # number of columns in a dataset\n",
    "hidden_size = 32  # number of neurons\n",
    "output_size = 256  \n",
    "sequence_length = 160  # number of sequences/ number of rows\n",
    "batch_size = 1\n",
    "num_epochs = 20000"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "19450d3a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'__header__': b'MATLAB 5.0 MAT-file Platform: posix, Created on: Thu Jul 20 15:02:48 2023',\n",
       " '__version__': '1.0',\n",
       " '__globals__': [],\n",
       " 'h': array([[0.03949907, 0.03945555, 0.03968762, ..., 0.04081577, 0.04034067,\n",
       "         0.03995187],\n",
       "        [0.03949522, 0.03972834, 0.04007071, ..., 0.0406224 , 0.0405568 ,\n",
       "         0.04021852],\n",
       "        [0.03980837, 0.03966293, 0.04008707, ..., 0.04077249, 0.04050591,\n",
       "         0.04019281],\n",
       "        ...,\n",
       "        [0.04915863, 0.04935256, 0.04961976, ..., 0.04917885, 0.04899574,\n",
       "         0.04881741],\n",
       "        [0.04904458, 0.04916197, 0.04943338, ..., 0.04902097, 0.04897786,\n",
       "         0.04875013],\n",
       "        [0.04913692, 0.04932824, 0.04941899, ..., 0.04888785, 0.0488357 ,\n",
       "         0.04855312]])}"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Load the .mat file\n",
    "v_data = scipy.io.loadmat('v.mat')\n",
    "h_data = scipy.io.loadmat('h.mat')\n",
    "x_data = scipy.io.loadmat('x.mat')\n",
    "h_data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "94133527",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = x_data['X']\n",
    "u = h_data['h']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "fde5d937",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<torch._C.Generator at 0x7f90d803d790>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Set random seed for reproducibility\n",
    "torch.manual_seed(42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "9be3a335",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "test data shape (256,)\n",
      "input data shape (160, 256)\n",
      "Target data shape (160, 256)\n"
     ]
    }
   ],
   "source": [
    "input_data = u[0:160,:]\n",
    "target_data = u[1:161, :]\n",
    "\n",
    "test_data = u[160, :]\n",
    "#test_target = u[161:201, :]\n",
    "\n",
    "print(\"test data shape\", test_data.shape)\n",
    "#print(\"test target shape\", test_target.shape)\n",
    "\n",
    "print(\"input data shape\",input_data.shape)\n",
    "print(\"Target data shape\",target_data.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "a46d6749",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "input tensor shape torch.Size([1, 160, 256])\n",
      "Target tensor shape torch.Size([1, 160, 256])\n"
     ]
    }
   ],
   "source": [
    "# Convert data to tensors\n",
    "input_tensor = torch.tensor(input_data).view(batch_size, sequence_length, input_size).float()\n",
    "target_tensor = torch.tensor(target_data).view(batch_size, sequence_length, output_size).float()\n",
    "\n",
    "print(\"input tensor shape\",input_tensor.shape)\n",
    "print(\"Target tensor shape\",target_tensor.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "7aea6d27",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Convert test data to tensors\n",
    "test_tensor = torch.tensor(test_data).view(batch_size, 1, input_size).float()\n",
    "#test_target_tensor = torch.tensor(test_target).view(batch_size, 40, output_size).float()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "e30cfc4a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 10/20000, Loss: 0.1034\n",
      "Epoch: 20/20000, Loss: 0.0575\n",
      "Epoch: 30/20000, Loss: 0.0340\n",
      "Epoch: 40/20000, Loss: 0.0237\n",
      "Epoch: 50/20000, Loss: 0.0118\n",
      "Epoch: 60/20000, Loss: 0.0046\n",
      "Epoch: 70/20000, Loss: 0.0021\n",
      "Epoch: 80/20000, Loss: 0.0012\n",
      "Epoch: 90/20000, Loss: 0.0009\n",
      "Epoch: 100/20000, Loss: 0.0008\n",
      "Epoch: 110/20000, Loss: 0.0007\n",
      "Epoch: 120/20000, Loss: 0.0006\n",
      "Epoch: 130/20000, Loss: 0.0006\n",
      "Epoch: 140/20000, Loss: 0.0006\n",
      "Epoch: 150/20000, Loss: 0.0006\n",
      "Epoch: 160/20000, Loss: 0.0006\n",
      "Epoch: 170/20000, Loss: 0.0006\n",
      "Epoch: 180/20000, Loss: 0.0005\n",
      "Epoch: 190/20000, Loss: 0.0005\n",
      "Epoch: 200/20000, Loss: 0.0005\n",
      "Epoch: 210/20000, Loss: 0.0005\n",
      "Epoch: 220/20000, Loss: 0.0005\n",
      "Epoch: 230/20000, Loss: 0.0005\n",
      "Epoch: 240/20000, Loss: 0.0005\n",
      "Epoch: 250/20000, Loss: 0.0005\n",
      "Epoch: 260/20000, Loss: 0.0005\n",
      "Epoch: 270/20000, Loss: 0.0005\n",
      "Epoch: 280/20000, Loss: 0.0005\n",
      "Epoch: 290/20000, Loss: 0.0029\n",
      "Epoch: 300/20000, Loss: 0.0014\n",
      "Epoch: 310/20000, Loss: 0.0005\n",
      "Epoch: 320/20000, Loss: 0.0005\n",
      "Epoch: 330/20000, Loss: 0.0004\n",
      "Epoch: 340/20000, Loss: 0.0004\n",
      "Epoch: 350/20000, Loss: 0.0004\n",
      "Epoch: 360/20000, Loss: 0.0004\n",
      "Epoch: 370/20000, Loss: 0.0004\n",
      "Epoch: 380/20000, Loss: 0.0003\n",
      "Epoch: 390/20000, Loss: 0.0003\n",
      "Epoch: 400/20000, Loss: 0.0003\n",
      "Epoch: 410/20000, Loss: 0.0003\n",
      "Epoch: 420/20000, Loss: 0.0003\n",
      "Epoch: 430/20000, Loss: 0.0003\n",
      "Epoch: 440/20000, Loss: 0.0003\n",
      "Epoch: 450/20000, Loss: 0.0002\n",
      "Epoch: 460/20000, Loss: 0.0002\n",
      "Epoch: 470/20000, Loss: 0.0002\n",
      "Epoch: 480/20000, Loss: 0.0002\n",
      "Epoch: 490/20000, Loss: 0.0002\n",
      "Epoch: 500/20000, Loss: 0.0002\n",
      "Epoch: 510/20000, Loss: 0.0002\n",
      "Epoch: 520/20000, Loss: 0.0002\n",
      "Epoch: 530/20000, Loss: 0.0002\n",
      "Epoch: 540/20000, Loss: 0.0001\n",
      "Epoch: 550/20000, Loss: 0.0001\n",
      "Epoch: 560/20000, Loss: 0.0001\n",
      "Epoch: 570/20000, Loss: 0.0001\n",
      "Epoch: 580/20000, Loss: 0.0001\n",
      "Epoch: 590/20000, Loss: 0.0001\n",
      "Epoch: 600/20000, Loss: 0.0001\n",
      "Epoch: 610/20000, Loss: 0.0001\n",
      "Epoch: 620/20000, Loss: 0.0013\n",
      "Epoch: 630/20000, Loss: 0.0002\n",
      "Epoch: 640/20000, Loss: 0.0001\n",
      "Epoch: 650/20000, Loss: 0.0001\n",
      "Epoch: 660/20000, Loss: 0.0001\n",
      "Epoch: 670/20000, Loss: 0.0001\n",
      "Epoch: 680/20000, Loss: 0.0001\n",
      "Epoch: 690/20000, Loss: 0.0001\n",
      "Epoch: 700/20000, Loss: 0.0001\n",
      "Epoch: 710/20000, Loss: 0.0001\n",
      "Epoch: 720/20000, Loss: 0.0001\n",
      "Epoch: 730/20000, Loss: 0.0001\n",
      "Epoch: 740/20000, Loss: 0.0001\n",
      "Epoch: 750/20000, Loss: 0.0001\n",
      "Epoch: 760/20000, Loss: 0.0001\n",
      "Epoch: 770/20000, Loss: 0.0001\n",
      "Epoch: 780/20000, Loss: 0.0001\n",
      "Epoch: 790/20000, Loss: 0.0001\n",
      "Epoch: 800/20000, Loss: 0.0001\n",
      "Epoch: 810/20000, Loss: 0.0001\n",
      "Epoch: 820/20000, Loss: 0.0001\n",
      "Epoch: 830/20000, Loss: 0.0001\n",
      "Epoch: 840/20000, Loss: 0.0001\n",
      "Epoch: 850/20000, Loss: 0.0001\n",
      "Epoch: 860/20000, Loss: 0.0001\n",
      "Epoch: 870/20000, Loss: 0.0001\n",
      "Epoch: 880/20000, Loss: 0.0001\n",
      "Epoch: 890/20000, Loss: 0.0022\n",
      "Epoch: 900/20000, Loss: 0.0001\n",
      "Epoch: 910/20000, Loss: 0.0002\n",
      "Epoch: 920/20000, Loss: 0.0001\n",
      "Epoch: 930/20000, Loss: 0.0001\n",
      "Epoch: 940/20000, Loss: 0.0001\n",
      "Epoch: 950/20000, Loss: 0.0001\n",
      "Epoch: 960/20000, Loss: 0.0001\n",
      "Epoch: 970/20000, Loss: 0.0001\n",
      "Epoch: 980/20000, Loss: 0.0001\n",
      "Epoch: 990/20000, Loss: 0.0001\n",
      "Epoch: 1000/20000, Loss: 0.0001\n",
      "Epoch: 1010/20000, Loss: 0.0001\n",
      "Epoch: 1020/20000, Loss: 0.0001\n",
      "Epoch: 1030/20000, Loss: 0.0001\n",
      "Epoch: 1040/20000, Loss: 0.0001\n",
      "Epoch: 1050/20000, Loss: 0.0001\n",
      "Epoch: 1060/20000, Loss: 0.0001\n",
      "Epoch: 1070/20000, Loss: 0.0001\n",
      "Epoch: 1080/20000, Loss: 0.0001\n",
      "Epoch: 1090/20000, Loss: 0.0001\n",
      "Epoch: 1100/20000, Loss: 0.0003\n",
      "Epoch: 1110/20000, Loss: 0.0002\n",
      "Epoch: 1120/20000, Loss: 0.0001\n",
      "Epoch: 1130/20000, Loss: 0.0001\n",
      "Epoch: 1140/20000, Loss: 0.0001\n",
      "Epoch: 1150/20000, Loss: 0.0001\n",
      "Epoch: 1160/20000, Loss: 0.0001\n",
      "Epoch: 1170/20000, Loss: 0.0001\n",
      "Epoch: 1180/20000, Loss: 0.0001\n",
      "Epoch: 1190/20000, Loss: 0.0001\n",
      "Epoch: 1200/20000, Loss: 0.0001\n",
      "Epoch: 1210/20000, Loss: 0.0001\n",
      "Epoch: 1220/20000, Loss: 0.0001\n",
      "Epoch: 1230/20000, Loss: 0.0001\n",
      "Epoch: 1240/20000, Loss: 0.0001\n",
      "Epoch: 1250/20000, Loss: 0.0001\n",
      "Epoch: 1260/20000, Loss: 0.0001\n",
      "Epoch: 1270/20000, Loss: 0.0001\n",
      "Epoch: 1280/20000, Loss: 0.0001\n",
      "Epoch: 1290/20000, Loss: 0.0001\n",
      "Epoch: 1300/20000, Loss: 0.0001\n",
      "Epoch: 1310/20000, Loss: 0.0004\n",
      "Epoch: 1320/20000, Loss: 0.0002\n",
      "Epoch: 1330/20000, Loss: 0.0001\n",
      "Epoch: 1340/20000, Loss: 0.0001\n",
      "Epoch: 1350/20000, Loss: 0.0001\n",
      "Epoch: 1360/20000, Loss: 0.0001\n",
      "Epoch: 1370/20000, Loss: 0.0001\n",
      "Epoch: 1380/20000, Loss: 0.0001\n",
      "Epoch: 1390/20000, Loss: 0.0001\n",
      "Epoch: 1400/20000, Loss: 0.0000\n",
      "Epoch: 1410/20000, Loss: 0.0000\n",
      "Epoch: 1420/20000, Loss: 0.0001\n",
      "Epoch: 1430/20000, Loss: 0.0008\n",
      "Epoch: 1440/20000, Loss: 0.0002\n",
      "Epoch: 1450/20000, Loss: 0.0001\n",
      "Epoch: 1460/20000, Loss: 0.0001\n",
      "Epoch: 1470/20000, Loss: 0.0001\n",
      "Epoch: 1480/20000, Loss: 0.0000\n",
      "Epoch: 1490/20000, Loss: 0.0000\n",
      "Epoch: 1500/20000, Loss: 0.0000\n",
      "Epoch: 1510/20000, Loss: 0.0000\n",
      "Epoch: 1520/20000, Loss: 0.0000\n",
      "Epoch: 1530/20000, Loss: 0.0000\n",
      "Epoch: 1540/20000, Loss: 0.0003\n",
      "Epoch: 1550/20000, Loss: 0.0001\n",
      "Epoch: 1560/20000, Loss: 0.0001\n",
      "Epoch: 1570/20000, Loss: 0.0000\n",
      "Epoch: 1580/20000, Loss: 0.0000\n",
      "Epoch: 1590/20000, Loss: 0.0000\n",
      "Epoch: 1600/20000, Loss: 0.0000\n",
      "Epoch: 1610/20000, Loss: 0.0000\n",
      "Epoch: 1620/20000, Loss: 0.0000\n",
      "Epoch: 1630/20000, Loss: 0.0000\n",
      "Epoch: 1640/20000, Loss: 0.0000\n",
      "Epoch: 1650/20000, Loss: 0.0000\n",
      "Epoch: 1660/20000, Loss: 0.0001\n",
      "Epoch: 1670/20000, Loss: 0.0001\n",
      "Epoch: 1680/20000, Loss: 0.0006\n",
      "Epoch: 1690/20000, Loss: 0.0001\n",
      "Epoch: 1700/20000, Loss: 0.0001\n",
      "Epoch: 1710/20000, Loss: 0.0000\n",
      "Epoch: 1720/20000, Loss: 0.0000\n",
      "Epoch: 1730/20000, Loss: 0.0000\n",
      "Epoch: 1740/20000, Loss: 0.0000\n",
      "Epoch: 1750/20000, Loss: 0.0000\n",
      "Epoch: 1760/20000, Loss: 0.0001\n",
      "Epoch: 1770/20000, Loss: 0.0001\n",
      "Epoch: 1780/20000, Loss: 0.0000\n",
      "Epoch: 1790/20000, Loss: 0.0001\n",
      "Epoch: 1800/20000, Loss: 0.0000\n",
      "Epoch: 1810/20000, Loss: 0.0000\n",
      "Epoch: 1820/20000, Loss: 0.0001\n",
      "Epoch: 1830/20000, Loss: 0.0000\n",
      "Epoch: 1840/20000, Loss: 0.0000\n",
      "Epoch: 1850/20000, Loss: 0.0000\n",
      "Epoch: 1860/20000, Loss: 0.0000\n",
      "Epoch: 1870/20000, Loss: 0.0002\n",
      "Epoch: 1880/20000, Loss: 0.0001\n",
      "Epoch: 1890/20000, Loss: 0.0002\n",
      "Epoch: 1900/20000, Loss: 0.0001\n",
      "Epoch: 1910/20000, Loss: 0.0001\n",
      "Epoch: 1920/20000, Loss: 0.0000\n",
      "Epoch: 1930/20000, Loss: 0.0000\n",
      "Epoch: 1940/20000, Loss: 0.0000\n",
      "Epoch: 1950/20000, Loss: 0.0000\n",
      "Epoch: 1960/20000, Loss: 0.0000\n",
      "Epoch: 1970/20000, Loss: 0.0001\n",
      "Epoch: 1980/20000, Loss: 0.0001\n",
      "Epoch: 1990/20000, Loss: 0.0000\n",
      "Epoch: 2000/20000, Loss: 0.0000\n",
      "Epoch: 2010/20000, Loss: 0.0000\n",
      "Epoch: 2020/20000, Loss: 0.0000\n",
      "Epoch: 2030/20000, Loss: 0.0000\n",
      "Epoch: 2040/20000, Loss: 0.0005\n",
      "Epoch: 2050/20000, Loss: 0.0004\n",
      "Epoch: 2060/20000, Loss: 0.0002\n",
      "Epoch: 2070/20000, Loss: 0.0001\n",
      "Epoch: 2080/20000, Loss: 0.0000\n",
      "Epoch: 2090/20000, Loss: 0.0000\n",
      "Epoch: 2100/20000, Loss: 0.0000\n",
      "Epoch: 2110/20000, Loss: 0.0000\n",
      "Epoch: 2120/20000, Loss: 0.0001\n",
      "Epoch: 2130/20000, Loss: 0.0001\n",
      "Epoch: 2140/20000, Loss: 0.0001\n",
      "Epoch: 2150/20000, Loss: 0.0001\n",
      "Epoch: 2160/20000, Loss: 0.0000\n",
      "Epoch: 2170/20000, Loss: 0.0000\n",
      "Epoch: 2180/20000, Loss: 0.0000\n",
      "Epoch: 2190/20000, Loss: 0.0000\n",
      "Epoch: 2200/20000, Loss: 0.0000\n",
      "Epoch: 2210/20000, Loss: 0.0004\n",
      "Epoch: 2220/20000, Loss: 0.0001\n",
      "Epoch: 2230/20000, Loss: 0.0001\n",
      "Epoch: 2240/20000, Loss: 0.0000\n",
      "Epoch: 2250/20000, Loss: 0.0000\n",
      "Epoch: 2260/20000, Loss: 0.0001\n",
      "Epoch: 2270/20000, Loss: 0.0000\n",
      "Epoch: 2280/20000, Loss: 0.0001\n",
      "Epoch: 2290/20000, Loss: 0.0002\n",
      "Epoch: 2300/20000, Loss: 0.0000\n",
      "Epoch: 2310/20000, Loss: 0.0000\n",
      "Epoch: 2320/20000, Loss: 0.0000\n",
      "Epoch: 2330/20000, Loss: 0.0000\n",
      "Epoch: 2340/20000, Loss: 0.0001\n",
      "Epoch: 2350/20000, Loss: 0.0000\n",
      "Epoch: 2360/20000, Loss: 0.0000\n",
      "Epoch: 2370/20000, Loss: 0.0000\n",
      "Epoch: 2380/20000, Loss: 0.0001\n",
      "Epoch: 2390/20000, Loss: 0.0001\n",
      "Epoch: 2400/20000, Loss: 0.0000\n",
      "Epoch: 2410/20000, Loss: 0.0000\n",
      "Epoch: 2420/20000, Loss: 0.0000\n",
      "Epoch: 2430/20000, Loss: 0.0002\n",
      "Epoch: 2440/20000, Loss: 0.0002\n",
      "Epoch: 2450/20000, Loss: 0.0001\n",
      "Epoch: 2460/20000, Loss: 0.0001\n",
      "Epoch: 2470/20000, Loss: 0.0000\n",
      "Epoch: 2480/20000, Loss: 0.0000\n",
      "Epoch: 2490/20000, Loss: 0.0002\n",
      "Epoch: 2500/20000, Loss: 0.0001\n",
      "Epoch: 2510/20000, Loss: 0.0001\n",
      "Epoch: 2520/20000, Loss: 0.0000\n",
      "Epoch: 2530/20000, Loss: 0.0000\n",
      "Epoch: 2540/20000, Loss: 0.0000\n",
      "Epoch: 2550/20000, Loss: 0.0000\n",
      "Epoch: 2560/20000, Loss: 0.0001\n",
      "Epoch: 2570/20000, Loss: 0.0001\n",
      "Epoch: 2580/20000, Loss: 0.0000\n",
      "Epoch: 2590/20000, Loss: 0.0000\n",
      "Epoch: 2600/20000, Loss: 0.0000\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 2610/20000, Loss: 0.0000\n",
      "Epoch: 2620/20000, Loss: 0.0000\n",
      "Epoch: 2630/20000, Loss: 0.0004\n",
      "Epoch: 2640/20000, Loss: 0.0008\n",
      "Epoch: 2650/20000, Loss: 0.0003\n",
      "Epoch: 2660/20000, Loss: 0.0001\n",
      "Epoch: 2670/20000, Loss: 0.0001\n",
      "Epoch: 2680/20000, Loss: 0.0001\n",
      "Epoch: 2690/20000, Loss: 0.0000\n",
      "Epoch: 2700/20000, Loss: 0.0000\n",
      "Epoch: 2710/20000, Loss: 0.0000\n",
      "Epoch: 2720/20000, Loss: 0.0000\n",
      "Epoch: 2730/20000, Loss: 0.0000\n",
      "Epoch: 2740/20000, Loss: 0.0000\n",
      "Epoch: 2750/20000, Loss: 0.0000\n",
      "Epoch: 2760/20000, Loss: 0.0001\n",
      "Epoch: 2770/20000, Loss: 0.0000\n",
      "Epoch: 2780/20000, Loss: 0.0000\n",
      "Epoch: 2790/20000, Loss: 0.0000\n",
      "Epoch: 2800/20000, Loss: 0.0000\n",
      "Epoch: 2810/20000, Loss: 0.0000\n",
      "Epoch: 2820/20000, Loss: 0.0000\n",
      "Epoch: 2830/20000, Loss: 0.0002\n",
      "Epoch: 2840/20000, Loss: 0.0001\n",
      "Epoch: 2850/20000, Loss: 0.0000\n",
      "Epoch: 2860/20000, Loss: 0.0000\n",
      "Epoch: 2870/20000, Loss: 0.0000\n",
      "Epoch: 2880/20000, Loss: 0.0000\n",
      "Epoch: 2890/20000, Loss: 0.0000\n",
      "Epoch: 2900/20000, Loss: 0.0000\n",
      "Epoch: 2910/20000, Loss: 0.0001\n",
      "Epoch: 2920/20000, Loss: 0.0000\n",
      "Epoch: 2930/20000, Loss: 0.0000\n",
      "Epoch: 2940/20000, Loss: 0.0001\n",
      "Epoch: 2950/20000, Loss: 0.0000\n",
      "Epoch: 2960/20000, Loss: 0.0000\n",
      "Epoch: 2970/20000, Loss: 0.0000\n",
      "Epoch: 2980/20000, Loss: 0.0000\n",
      "Epoch: 2990/20000, Loss: 0.0000\n",
      "Epoch: 3000/20000, Loss: 0.0006\n",
      "Epoch: 3010/20000, Loss: 0.0002\n",
      "Epoch: 3020/20000, Loss: 0.0001\n",
      "Epoch: 3030/20000, Loss: 0.0000\n",
      "Epoch: 3040/20000, Loss: 0.0000\n",
      "Epoch: 3050/20000, Loss: 0.0000\n",
      "Epoch: 3060/20000, Loss: 0.0000\n",
      "Epoch: 3070/20000, Loss: 0.0000\n",
      "Epoch: 3080/20000, Loss: 0.0000\n",
      "Epoch: 3090/20000, Loss: 0.0000\n",
      "Epoch: 3100/20000, Loss: 0.0001\n",
      "Epoch: 3110/20000, Loss: 0.0002\n",
      "Epoch: 3120/20000, Loss: 0.0001\n",
      "Epoch: 3130/20000, Loss: 0.0014\n",
      "Epoch: 3140/20000, Loss: 0.0002\n",
      "Epoch: 3150/20000, Loss: 0.0001\n",
      "Epoch: 3160/20000, Loss: 0.0000\n",
      "Epoch: 3170/20000, Loss: 0.0000\n",
      "Epoch: 3180/20000, Loss: 0.0000\n",
      "Epoch: 3190/20000, Loss: 0.0000\n",
      "Epoch: 3200/20000, Loss: 0.0000\n",
      "Epoch: 3210/20000, Loss: 0.0001\n",
      "Epoch: 3220/20000, Loss: 0.0000\n",
      "Epoch: 3230/20000, Loss: 0.0000\n",
      "Epoch: 3240/20000, Loss: 0.0000\n",
      "Epoch: 3250/20000, Loss: 0.0000\n",
      "Epoch: 3260/20000, Loss: 0.0000\n",
      "Epoch: 3270/20000, Loss: 0.0000\n",
      "Epoch: 3280/20000, Loss: 0.0005\n",
      "Epoch: 3290/20000, Loss: 0.0001\n",
      "Epoch: 3300/20000, Loss: 0.0001\n",
      "Epoch: 3310/20000, Loss: 0.0000\n",
      "Epoch: 3320/20000, Loss: 0.0000\n",
      "Epoch: 3330/20000, Loss: 0.0000\n",
      "Epoch: 3340/20000, Loss: 0.0002\n",
      "Epoch: 3350/20000, Loss: 0.0000\n",
      "Epoch: 3360/20000, Loss: 0.0000\n",
      "Epoch: 3370/20000, Loss: 0.0000\n",
      "Epoch: 3380/20000, Loss: 0.0000\n",
      "Epoch: 3390/20000, Loss: 0.0000\n",
      "Epoch: 3400/20000, Loss: 0.0001\n",
      "Epoch: 3410/20000, Loss: 0.0000\n",
      "Epoch: 3420/20000, Loss: 0.0002\n",
      "Epoch: 3430/20000, Loss: 0.0001\n",
      "Epoch: 3440/20000, Loss: 0.0000\n",
      "Epoch: 3450/20000, Loss: 0.0000\n",
      "Epoch: 3460/20000, Loss: 0.0000\n",
      "Epoch: 3470/20000, Loss: 0.0000\n",
      "Epoch: 3480/20000, Loss: 0.0000\n",
      "Epoch: 3490/20000, Loss: 0.0002\n",
      "Epoch: 3500/20000, Loss: 0.0003\n",
      "Epoch: 3510/20000, Loss: 0.0002\n",
      "Epoch: 3520/20000, Loss: 0.0000\n",
      "Epoch: 3530/20000, Loss: 0.0000\n",
      "Epoch: 3540/20000, Loss: 0.0000\n",
      "Epoch: 3550/20000, Loss: 0.0000\n",
      "Epoch: 3560/20000, Loss: 0.0000\n",
      "Epoch: 3570/20000, Loss: 0.0007\n",
      "Epoch: 3580/20000, Loss: 0.0002\n",
      "Epoch: 3590/20000, Loss: 0.0001\n",
      "Epoch: 3600/20000, Loss: 0.0000\n",
      "Epoch: 3610/20000, Loss: 0.0000\n",
      "Epoch: 3620/20000, Loss: 0.0000\n",
      "Epoch: 3630/20000, Loss: 0.0000\n",
      "Epoch: 3640/20000, Loss: 0.0000\n",
      "Epoch: 3650/20000, Loss: 0.0000\n",
      "Epoch: 3660/20000, Loss: 0.0001\n",
      "Epoch: 3670/20000, Loss: 0.0001\n",
      "Epoch: 3680/20000, Loss: 0.0001\n",
      "Epoch: 3690/20000, Loss: 0.0001\n",
      "Epoch: 3700/20000, Loss: 0.0001\n",
      "Epoch: 3710/20000, Loss: 0.0000\n",
      "Epoch: 3720/20000, Loss: 0.0000\n",
      "Epoch: 3730/20000, Loss: 0.0003\n",
      "Epoch: 3740/20000, Loss: 0.0001\n",
      "Epoch: 3750/20000, Loss: 0.0000\n",
      "Epoch: 3760/20000, Loss: 0.0000\n",
      "Epoch: 3770/20000, Loss: 0.0003\n",
      "Epoch: 3780/20000, Loss: 0.0001\n",
      "Epoch: 3790/20000, Loss: 0.0000\n",
      "Epoch: 3800/20000, Loss: 0.0000\n",
      "Epoch: 3810/20000, Loss: 0.0000\n",
      "Epoch: 3820/20000, Loss: 0.0000\n",
      "Epoch: 3830/20000, Loss: 0.0000\n",
      "Epoch: 3840/20000, Loss: 0.0005\n",
      "Epoch: 3850/20000, Loss: 0.0002\n",
      "Epoch: 3860/20000, Loss: 0.0001\n",
      "Epoch: 3870/20000, Loss: 0.0000\n",
      "Epoch: 3880/20000, Loss: 0.0000\n",
      "Epoch: 3890/20000, Loss: 0.0000\n",
      "Epoch: 3900/20000, Loss: 0.0001\n",
      "Epoch: 3910/20000, Loss: 0.0001\n",
      "Epoch: 3920/20000, Loss: 0.0000\n",
      "Epoch: 3930/20000, Loss: 0.0000\n",
      "Epoch: 3940/20000, Loss: 0.0000\n",
      "Epoch: 3950/20000, Loss: 0.0000\n",
      "Epoch: 3960/20000, Loss: 0.0004\n",
      "Epoch: 3970/20000, Loss: 0.0002\n",
      "Epoch: 3980/20000, Loss: 0.0002\n",
      "Epoch: 3990/20000, Loss: 0.0001\n",
      "Epoch: 4000/20000, Loss: 0.0000\n",
      "Epoch: 4010/20000, Loss: 0.0000\n",
      "Epoch: 4020/20000, Loss: 0.0000\n",
      "Epoch: 4030/20000, Loss: 0.0000\n",
      "Epoch: 4040/20000, Loss: 0.0001\n",
      "Epoch: 4050/20000, Loss: 0.0002\n",
      "Epoch: 4060/20000, Loss: 0.0001\n",
      "Epoch: 4070/20000, Loss: 0.0000\n",
      "Epoch: 4080/20000, Loss: 0.0000\n",
      "Epoch: 4090/20000, Loss: 0.0000\n",
      "Epoch: 4100/20000, Loss: 0.0000\n",
      "Epoch: 4110/20000, Loss: 0.0003\n",
      "Epoch: 4120/20000, Loss: 0.0009\n",
      "Epoch: 4130/20000, Loss: 0.0002\n",
      "Epoch: 4140/20000, Loss: 0.0001\n",
      "Epoch: 4150/20000, Loss: 0.0000\n",
      "Epoch: 4160/20000, Loss: 0.0000\n",
      "Epoch: 4170/20000, Loss: 0.0000\n",
      "Epoch: 4180/20000, Loss: 0.0000\n",
      "Epoch: 4190/20000, Loss: 0.0000\n",
      "Epoch: 4200/20000, Loss: 0.0000\n",
      "Epoch: 4210/20000, Loss: 0.0000\n",
      "Epoch: 4220/20000, Loss: 0.0000\n",
      "Epoch: 4230/20000, Loss: 0.0008\n",
      "Epoch: 4240/20000, Loss: 0.0004\n",
      "Epoch: 4250/20000, Loss: 0.0001\n",
      "Epoch: 4260/20000, Loss: 0.0000\n",
      "Epoch: 4270/20000, Loss: 0.0000\n",
      "Epoch: 4280/20000, Loss: 0.0000\n",
      "Epoch: 4290/20000, Loss: 0.0000\n",
      "Epoch: 4300/20000, Loss: 0.0000\n",
      "Epoch: 4310/20000, Loss: 0.0003\n",
      "Epoch: 4320/20000, Loss: 0.0000\n",
      "Epoch: 4330/20000, Loss: 0.0000\n",
      "Epoch: 4340/20000, Loss: 0.0000\n",
      "Epoch: 4350/20000, Loss: 0.0000\n",
      "Epoch: 4360/20000, Loss: 0.0000\n",
      "Epoch: 4370/20000, Loss: 0.0000\n",
      "Epoch: 4380/20000, Loss: 0.0005\n",
      "Epoch: 4390/20000, Loss: 0.0000\n",
      "Epoch: 4400/20000, Loss: 0.0001\n",
      "Epoch: 4410/20000, Loss: 0.0000\n",
      "Epoch: 4420/20000, Loss: 0.0000\n",
      "Epoch: 4430/20000, Loss: 0.0000\n",
      "Epoch: 4440/20000, Loss: 0.0000\n",
      "Epoch: 4450/20000, Loss: 0.0000\n",
      "Epoch: 4460/20000, Loss: 0.0000\n",
      "Epoch: 4470/20000, Loss: 0.0003\n",
      "Epoch: 4480/20000, Loss: 0.0001\n",
      "Epoch: 4490/20000, Loss: 0.0002\n",
      "Epoch: 4500/20000, Loss: 0.0001\n",
      "Epoch: 4510/20000, Loss: 0.0000\n",
      "Epoch: 4520/20000, Loss: 0.0000\n",
      "Epoch: 4530/20000, Loss: 0.0000\n",
      "Epoch: 4540/20000, Loss: 0.0000\n",
      "Epoch: 4550/20000, Loss: 0.0000\n",
      "Epoch: 4560/20000, Loss: 0.0000\n",
      "Epoch: 4570/20000, Loss: 0.0000\n",
      "Epoch: 4580/20000, Loss: 0.0006\n",
      "Epoch: 4590/20000, Loss: 0.0001\n",
      "Epoch: 4600/20000, Loss: 0.0001\n",
      "Epoch: 4610/20000, Loss: 0.0000\n",
      "Epoch: 4620/20000, Loss: 0.0000\n",
      "Epoch: 4630/20000, Loss: 0.0000\n",
      "Epoch: 4640/20000, Loss: 0.0002\n",
      "Epoch: 4650/20000, Loss: 0.0001\n",
      "Epoch: 4660/20000, Loss: 0.0000\n",
      "Epoch: 4670/20000, Loss: 0.0000\n",
      "Epoch: 4680/20000, Loss: 0.0000\n",
      "Epoch: 4690/20000, Loss: 0.0005\n",
      "Epoch: 4700/20000, Loss: 0.0001\n",
      "Epoch: 4710/20000, Loss: 0.0000\n",
      "Epoch: 4720/20000, Loss: 0.0000\n",
      "Epoch: 4730/20000, Loss: 0.0000\n",
      "Epoch: 4740/20000, Loss: 0.0000\n",
      "Epoch: 4750/20000, Loss: 0.0001\n",
      "Epoch: 4760/20000, Loss: 0.0003\n",
      "Epoch: 4770/20000, Loss: 0.0001\n",
      "Epoch: 4780/20000, Loss: 0.0000\n",
      "Epoch: 4790/20000, Loss: 0.0001\n",
      "Epoch: 4800/20000, Loss: 0.0000\n",
      "Epoch: 4810/20000, Loss: 0.0000\n",
      "Epoch: 4820/20000, Loss: 0.0000\n",
      "Epoch: 4830/20000, Loss: 0.0000\n",
      "Epoch: 4840/20000, Loss: 0.0000\n",
      "Epoch: 4850/20000, Loss: 0.0005\n",
      "Epoch: 4860/20000, Loss: 0.0002\n",
      "Epoch: 4870/20000, Loss: 0.0001\n",
      "Epoch: 4880/20000, Loss: 0.0000\n",
      "Epoch: 4890/20000, Loss: 0.0000\n",
      "Epoch: 4900/20000, Loss: 0.0000\n",
      "Epoch: 4910/20000, Loss: 0.0000\n",
      "Epoch: 4920/20000, Loss: 0.0004\n",
      "Epoch: 4930/20000, Loss: 0.0003\n",
      "Epoch: 4940/20000, Loss: 0.0002\n",
      "Epoch: 4950/20000, Loss: 0.0000\n",
      "Epoch: 4960/20000, Loss: 0.0000\n",
      "Epoch: 4970/20000, Loss: 0.0000\n",
      "Epoch: 4980/20000, Loss: 0.0000\n",
      "Epoch: 4990/20000, Loss: 0.0000\n",
      "Epoch: 5000/20000, Loss: 0.0001\n",
      "Epoch: 5010/20000, Loss: 0.0003\n",
      "Epoch: 5020/20000, Loss: 0.0001\n",
      "Epoch: 5030/20000, Loss: 0.0000\n",
      "Epoch: 5040/20000, Loss: 0.0000\n",
      "Epoch: 5050/20000, Loss: 0.0000\n",
      "Epoch: 5060/20000, Loss: 0.0000\n",
      "Epoch: 5070/20000, Loss: 0.0000\n",
      "Epoch: 5080/20000, Loss: 0.0002\n",
      "Epoch: 5090/20000, Loss: 0.0002\n",
      "Epoch: 5100/20000, Loss: 0.0000\n",
      "Epoch: 5110/20000, Loss: 0.0000\n",
      "Epoch: 5120/20000, Loss: 0.0000\n",
      "Epoch: 5130/20000, Loss: 0.0001\n",
      "Epoch: 5140/20000, Loss: 0.0001\n",
      "Epoch: 5150/20000, Loss: 0.0001\n",
      "Epoch: 5160/20000, Loss: 0.0000\n",
      "Epoch: 5170/20000, Loss: 0.0000\n",
      "Epoch: 5180/20000, Loss: 0.0000\n",
      "Epoch: 5190/20000, Loss: 0.0000\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 5200/20000, Loss: 0.0000\n",
      "Epoch: 5210/20000, Loss: 0.0000\n",
      "Epoch: 5220/20000, Loss: 0.0011\n",
      "Epoch: 5230/20000, Loss: 0.0002\n",
      "Epoch: 5240/20000, Loss: 0.0002\n",
      "Epoch: 5250/20000, Loss: 0.0000\n",
      "Epoch: 5260/20000, Loss: 0.0000\n",
      "Epoch: 5270/20000, Loss: 0.0000\n",
      "Epoch: 5280/20000, Loss: 0.0000\n",
      "Epoch: 5290/20000, Loss: 0.0000\n",
      "Epoch: 5300/20000, Loss: 0.0000\n",
      "Epoch: 5310/20000, Loss: 0.0000\n",
      "Epoch: 5320/20000, Loss: 0.0000\n",
      "Epoch: 5330/20000, Loss: 0.0004\n",
      "Epoch: 5340/20000, Loss: 0.0003\n",
      "Epoch: 5350/20000, Loss: 0.0002\n",
      "Epoch: 5360/20000, Loss: 0.0001\n",
      "Epoch: 5370/20000, Loss: 0.0000\n",
      "Epoch: 5380/20000, Loss: 0.0000\n",
      "Epoch: 5390/20000, Loss: 0.0000\n",
      "Epoch: 5400/20000, Loss: 0.0000\n",
      "Epoch: 5410/20000, Loss: 0.0000\n",
      "Epoch: 5420/20000, Loss: 0.0000\n",
      "Epoch: 5430/20000, Loss: 0.0003\n",
      "Epoch: 5440/20000, Loss: 0.0001\n",
      "Epoch: 5450/20000, Loss: 0.0001\n",
      "Epoch: 5460/20000, Loss: 0.0000\n",
      "Epoch: 5470/20000, Loss: 0.0000\n",
      "Epoch: 5480/20000, Loss: 0.0000\n",
      "Epoch: 5490/20000, Loss: 0.0000\n",
      "Epoch: 5500/20000, Loss: 0.0000\n",
      "Epoch: 5510/20000, Loss: 0.0001\n",
      "Epoch: 5520/20000, Loss: 0.0001\n",
      "Epoch: 5530/20000, Loss: 0.0003\n",
      "Epoch: 5540/20000, Loss: 0.0001\n",
      "Epoch: 5550/20000, Loss: 0.0000\n",
      "Epoch: 5560/20000, Loss: 0.0000\n",
      "Epoch: 5570/20000, Loss: 0.0000\n",
      "Epoch: 5580/20000, Loss: 0.0000\n",
      "Epoch: 5590/20000, Loss: 0.0000\n",
      "Epoch: 5600/20000, Loss: 0.0001\n",
      "Epoch: 5610/20000, Loss: 0.0003\n",
      "Epoch: 5620/20000, Loss: 0.0001\n",
      "Epoch: 5630/20000, Loss: 0.0000\n",
      "Epoch: 5640/20000, Loss: 0.0000\n",
      "Epoch: 5650/20000, Loss: 0.0000\n",
      "Epoch: 5660/20000, Loss: 0.0000\n",
      "Epoch: 5670/20000, Loss: 0.0000\n",
      "Epoch: 5680/20000, Loss: 0.0000\n",
      "Epoch: 5690/20000, Loss: 0.0000\n",
      "Epoch: 5700/20000, Loss: 0.0006\n",
      "Epoch: 5710/20000, Loss: 0.0002\n",
      "Epoch: 5720/20000, Loss: 0.0001\n",
      "Epoch: 5730/20000, Loss: 0.0000\n",
      "Epoch: 5740/20000, Loss: 0.0000\n",
      "Epoch: 5750/20000, Loss: 0.0000\n",
      "Epoch: 5760/20000, Loss: 0.0000\n",
      "Epoch: 5770/20000, Loss: 0.0000\n",
      "Epoch: 5780/20000, Loss: 0.0000\n",
      "Epoch: 5790/20000, Loss: 0.0000\n",
      "Epoch: 5800/20000, Loss: 0.0007\n",
      "Epoch: 5810/20000, Loss: 0.0002\n",
      "Epoch: 5820/20000, Loss: 0.0001\n",
      "Epoch: 5830/20000, Loss: 0.0000\n",
      "Epoch: 5840/20000, Loss: 0.0000\n",
      "Epoch: 5850/20000, Loss: 0.0002\n",
      "Epoch: 5860/20000, Loss: 0.0000\n",
      "Epoch: 5870/20000, Loss: 0.0000\n",
      "Epoch: 5880/20000, Loss: 0.0000\n",
      "Epoch: 5890/20000, Loss: 0.0000\n",
      "Epoch: 5900/20000, Loss: 0.0003\n",
      "Epoch: 5910/20000, Loss: 0.0001\n",
      "Epoch: 5920/20000, Loss: 0.0001\n",
      "Epoch: 5930/20000, Loss: 0.0000\n",
      "Epoch: 5940/20000, Loss: 0.0000\n",
      "Epoch: 5950/20000, Loss: 0.0000\n",
      "Epoch: 5960/20000, Loss: 0.0000\n",
      "Epoch: 5970/20000, Loss: 0.0000\n",
      "Epoch: 5980/20000, Loss: 0.0007\n",
      "Epoch: 5990/20000, Loss: 0.0002\n",
      "Epoch: 6000/20000, Loss: 0.0000\n",
      "Epoch: 6010/20000, Loss: 0.0000\n",
      "Epoch: 6020/20000, Loss: 0.0000\n",
      "Epoch: 6030/20000, Loss: 0.0000\n",
      "Epoch: 6040/20000, Loss: 0.0000\n",
      "Epoch: 6050/20000, Loss: 0.0000\n",
      "Epoch: 6060/20000, Loss: 0.0003\n",
      "Epoch: 6070/20000, Loss: 0.0001\n",
      "Epoch: 6080/20000, Loss: 0.0001\n",
      "Epoch: 6090/20000, Loss: 0.0000\n",
      "Epoch: 6100/20000, Loss: 0.0000\n",
      "Epoch: 6110/20000, Loss: 0.0000\n",
      "Epoch: 6120/20000, Loss: 0.0000\n",
      "Epoch: 6130/20000, Loss: 0.0000\n",
      "Epoch: 6140/20000, Loss: 0.0000\n",
      "Epoch: 6150/20000, Loss: 0.0004\n",
      "Epoch: 6160/20000, Loss: 0.0050\n",
      "Epoch: 6170/20000, Loss: 0.0038\n",
      "Epoch: 6180/20000, Loss: 0.0013\n",
      "Epoch: 6190/20000, Loss: 0.0005\n",
      "Epoch: 6200/20000, Loss: 0.0003\n",
      "Epoch: 6210/20000, Loss: 0.0001\n",
      "Epoch: 6220/20000, Loss: 0.0001\n",
      "Epoch: 6230/20000, Loss: 0.0000\n",
      "Epoch: 6240/20000, Loss: 0.0000\n",
      "Epoch: 6250/20000, Loss: 0.0000\n",
      "Epoch: 6260/20000, Loss: 0.0000\n",
      "Epoch: 6270/20000, Loss: 0.0000\n",
      "Epoch: 6280/20000, Loss: 0.0000\n",
      "Epoch: 6290/20000, Loss: 0.0000\n",
      "Epoch: 6300/20000, Loss: 0.0000\n",
      "Epoch: 6310/20000, Loss: 0.0000\n",
      "Epoch: 6320/20000, Loss: 0.0000\n",
      "Epoch: 6330/20000, Loss: 0.0000\n",
      "Epoch: 6340/20000, Loss: 0.0000\n",
      "Epoch: 6350/20000, Loss: 0.0000\n",
      "Epoch: 6360/20000, Loss: 0.0000\n",
      "Epoch: 6370/20000, Loss: 0.0000\n",
      "Epoch: 6380/20000, Loss: 0.0000\n",
      "Epoch: 6390/20000, Loss: 0.0000\n",
      "Epoch: 6400/20000, Loss: 0.0000\n",
      "Epoch: 6410/20000, Loss: 0.0000\n",
      "Epoch: 6420/20000, Loss: 0.0000\n",
      "Epoch: 6430/20000, Loss: 0.0001\n",
      "Epoch: 6440/20000, Loss: 0.0001\n",
      "Epoch: 6450/20000, Loss: 0.0000\n",
      "Epoch: 6460/20000, Loss: 0.0000\n",
      "Epoch: 6470/20000, Loss: 0.0000\n",
      "Epoch: 6480/20000, Loss: 0.0000\n",
      "Epoch: 6490/20000, Loss: 0.0000\n",
      "Epoch: 6500/20000, Loss: 0.0000\n",
      "Epoch: 6510/20000, Loss: 0.0000\n",
      "Epoch: 6520/20000, Loss: 0.0000\n",
      "Epoch: 6530/20000, Loss: 0.0001\n",
      "Epoch: 6540/20000, Loss: 0.0001\n",
      "Epoch: 6550/20000, Loss: 0.0000\n",
      "Epoch: 6560/20000, Loss: 0.0000\n",
      "Epoch: 6570/20000, Loss: 0.0000\n",
      "Epoch: 6580/20000, Loss: 0.0000\n",
      "Epoch: 6590/20000, Loss: 0.0000\n",
      "Epoch: 6600/20000, Loss: 0.0000\n",
      "Epoch: 6610/20000, Loss: 0.0000\n",
      "Epoch: 6620/20000, Loss: 0.0000\n",
      "Epoch: 6630/20000, Loss: 0.0002\n",
      "Epoch: 6640/20000, Loss: 0.0001\n",
      "Epoch: 6650/20000, Loss: 0.0000\n",
      "Epoch: 6660/20000, Loss: 0.0000\n",
      "Epoch: 6670/20000, Loss: 0.0000\n",
      "Epoch: 6680/20000, Loss: 0.0000\n",
      "Epoch: 6690/20000, Loss: 0.0000\n",
      "Epoch: 6700/20000, Loss: 0.0000\n",
      "Epoch: 6710/20000, Loss: 0.0000\n",
      "Epoch: 6720/20000, Loss: 0.0002\n",
      "Epoch: 6730/20000, Loss: 0.0001\n",
      "Epoch: 6740/20000, Loss: 0.0000\n",
      "Epoch: 6750/20000, Loss: 0.0000\n",
      "Epoch: 6760/20000, Loss: 0.0000\n",
      "Epoch: 6770/20000, Loss: 0.0000\n",
      "Epoch: 6780/20000, Loss: 0.0000\n",
      "Epoch: 6790/20000, Loss: 0.0000\n",
      "Epoch: 6800/20000, Loss: 0.0001\n",
      "Epoch: 6810/20000, Loss: 0.0001\n",
      "Epoch: 6820/20000, Loss: 0.0001\n",
      "Epoch: 6830/20000, Loss: 0.0000\n",
      "Epoch: 6840/20000, Loss: 0.0000\n",
      "Epoch: 6850/20000, Loss: 0.0000\n",
      "Epoch: 6860/20000, Loss: 0.0000\n",
      "Epoch: 6870/20000, Loss: 0.0000\n",
      "Epoch: 6880/20000, Loss: 0.0003\n",
      "Epoch: 6890/20000, Loss: 0.0001\n",
      "Epoch: 6900/20000, Loss: 0.0000\n",
      "Epoch: 6910/20000, Loss: 0.0000\n",
      "Epoch: 6920/20000, Loss: 0.0000\n",
      "Epoch: 6930/20000, Loss: 0.0000\n",
      "Epoch: 6940/20000, Loss: 0.0000\n",
      "Epoch: 6950/20000, Loss: 0.0000\n",
      "Epoch: 6960/20000, Loss: 0.0003\n",
      "Epoch: 6970/20000, Loss: 0.0001\n",
      "Epoch: 6980/20000, Loss: 0.0000\n",
      "Epoch: 6990/20000, Loss: 0.0000\n",
      "Epoch: 7000/20000, Loss: 0.0000\n",
      "Epoch: 7010/20000, Loss: 0.0000\n",
      "Epoch: 7020/20000, Loss: 0.0000\n",
      "Epoch: 7030/20000, Loss: 0.0000\n",
      "Epoch: 7040/20000, Loss: 0.0004\n",
      "Epoch: 7050/20000, Loss: 0.0001\n",
      "Epoch: 7060/20000, Loss: 0.0000\n",
      "Epoch: 7070/20000, Loss: 0.0000\n",
      "Epoch: 7080/20000, Loss: 0.0000\n",
      "Epoch: 7090/20000, Loss: 0.0000\n",
      "Epoch: 7100/20000, Loss: 0.0001\n",
      "Epoch: 7110/20000, Loss: 0.0001\n",
      "Epoch: 7120/20000, Loss: 0.0000\n",
      "Epoch: 7130/20000, Loss: 0.0000\n",
      "Epoch: 7140/20000, Loss: 0.0000\n",
      "Epoch: 7150/20000, Loss: 0.0001\n",
      "Epoch: 7160/20000, Loss: 0.0002\n",
      "Epoch: 7170/20000, Loss: 0.0001\n",
      "Epoch: 7180/20000, Loss: 0.0000\n",
      "Epoch: 7190/20000, Loss: 0.0000\n",
      "Epoch: 7200/20000, Loss: 0.0000\n",
      "Epoch: 7210/20000, Loss: 0.0000\n",
      "Epoch: 7220/20000, Loss: 0.0004\n",
      "Epoch: 7230/20000, Loss: 0.0001\n",
      "Epoch: 7240/20000, Loss: 0.0001\n",
      "Epoch: 7250/20000, Loss: 0.0000\n",
      "Epoch: 7260/20000, Loss: 0.0000\n",
      "Epoch: 7270/20000, Loss: 0.0002\n",
      "Epoch: 7280/20000, Loss: 0.0001\n",
      "Epoch: 7290/20000, Loss: 0.0001\n",
      "Epoch: 7300/20000, Loss: 0.0000\n",
      "Epoch: 7310/20000, Loss: 0.0000\n",
      "Epoch: 7320/20000, Loss: 0.0000\n",
      "Epoch: 7330/20000, Loss: 0.0001\n",
      "Epoch: 7340/20000, Loss: 0.0001\n",
      "Epoch: 7350/20000, Loss: 0.0001\n",
      "Epoch: 7360/20000, Loss: 0.0000\n",
      "Epoch: 7370/20000, Loss: 0.0000\n",
      "Epoch: 7380/20000, Loss: 0.0000\n",
      "Epoch: 7390/20000, Loss: 0.0001\n",
      "Epoch: 7400/20000, Loss: 0.0003\n",
      "Epoch: 7410/20000, Loss: 0.0003\n",
      "Epoch: 7420/20000, Loss: 0.0000\n",
      "Epoch: 7430/20000, Loss: 0.0000\n",
      "Epoch: 7440/20000, Loss: 0.0000\n",
      "Epoch: 7450/20000, Loss: 0.0000\n",
      "Epoch: 7460/20000, Loss: 0.0000\n",
      "Epoch: 7470/20000, Loss: 0.0001\n",
      "Epoch: 7480/20000, Loss: 0.0000\n",
      "Epoch: 7490/20000, Loss: 0.0000\n",
      "Epoch: 7500/20000, Loss: 0.0000\n",
      "Epoch: 7510/20000, Loss: 0.0000\n",
      "Epoch: 7520/20000, Loss: 0.0000\n",
      "Epoch: 7530/20000, Loss: 0.0004\n",
      "Epoch: 7540/20000, Loss: 0.0003\n",
      "Epoch: 7550/20000, Loss: 0.0001\n",
      "Epoch: 7560/20000, Loss: 0.0000\n",
      "Epoch: 7570/20000, Loss: 0.0000\n",
      "Epoch: 7580/20000, Loss: 0.0000\n",
      "Epoch: 7590/20000, Loss: 0.0000\n",
      "Epoch: 7600/20000, Loss: 0.0000\n",
      "Epoch: 7610/20000, Loss: 0.0000\n",
      "Epoch: 7620/20000, Loss: 0.0005\n",
      "Epoch: 7630/20000, Loss: 0.0001\n",
      "Epoch: 7640/20000, Loss: 0.0001\n",
      "Epoch: 7650/20000, Loss: 0.0000\n",
      "Epoch: 7660/20000, Loss: 0.0000\n",
      "Epoch: 7670/20000, Loss: 0.0001\n",
      "Epoch: 7680/20000, Loss: 0.0001\n",
      "Epoch: 7690/20000, Loss: 0.0000\n",
      "Epoch: 7700/20000, Loss: 0.0000\n",
      "Epoch: 7710/20000, Loss: 0.0000\n",
      "Epoch: 7720/20000, Loss: 0.0000\n",
      "Epoch: 7730/20000, Loss: 0.0004\n",
      "Epoch: 7740/20000, Loss: 0.0004\n",
      "Epoch: 7750/20000, Loss: 0.0002\n",
      "Epoch: 7760/20000, Loss: 0.0000\n",
      "Epoch: 7770/20000, Loss: 0.0000\n",
      "Epoch: 7780/20000, Loss: 0.0000\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 7790/20000, Loss: 0.0000\n",
      "Epoch: 7800/20000, Loss: 0.0000\n",
      "Epoch: 7810/20000, Loss: 0.0000\n",
      "Epoch: 7820/20000, Loss: 0.0000\n",
      "Epoch: 7830/20000, Loss: 0.0000\n",
      "Epoch: 7840/20000, Loss: 0.0000\n",
      "Epoch: 7850/20000, Loss: 0.0000\n",
      "Epoch: 7860/20000, Loss: 0.0003\n",
      "Epoch: 7870/20000, Loss: 0.0001\n",
      "Epoch: 7880/20000, Loss: 0.0000\n",
      "Epoch: 7890/20000, Loss: 0.0000\n",
      "Epoch: 7900/20000, Loss: 0.0000\n",
      "Epoch: 7910/20000, Loss: 0.0002\n",
      "Epoch: 7920/20000, Loss: 0.0001\n",
      "Epoch: 7930/20000, Loss: 0.0000\n",
      "Epoch: 7940/20000, Loss: 0.0000\n",
      "Epoch: 7950/20000, Loss: 0.0000\n",
      "Epoch: 7960/20000, Loss: 0.0000\n",
      "Epoch: 7970/20000, Loss: 0.0004\n",
      "Epoch: 7980/20000, Loss: 0.0002\n",
      "Epoch: 7990/20000, Loss: 0.0000\n",
      "Epoch: 8000/20000, Loss: 0.0000\n",
      "Epoch: 8010/20000, Loss: 0.0000\n",
      "Epoch: 8020/20000, Loss: 0.0001\n",
      "Epoch: 8030/20000, Loss: 0.0001\n",
      "Epoch: 8040/20000, Loss: 0.0002\n",
      "Epoch: 8050/20000, Loss: 0.0000\n",
      "Epoch: 8060/20000, Loss: 0.0000\n",
      "Epoch: 8070/20000, Loss: 0.0000\n",
      "Epoch: 8080/20000, Loss: 0.0000\n",
      "Epoch: 8090/20000, Loss: 0.0003\n",
      "Epoch: 8100/20000, Loss: 0.0001\n",
      "Epoch: 8110/20000, Loss: 0.0000\n",
      "Epoch: 8120/20000, Loss: 0.0000\n",
      "Epoch: 8130/20000, Loss: 0.0000\n",
      "Epoch: 8140/20000, Loss: 0.0000\n",
      "Epoch: 8150/20000, Loss: 0.0001\n",
      "Epoch: 8160/20000, Loss: 0.0002\n",
      "Epoch: 8170/20000, Loss: 0.0000\n",
      "Epoch: 8180/20000, Loss: 0.0000\n",
      "Epoch: 8190/20000, Loss: 0.0000\n",
      "Epoch: 8200/20000, Loss: 0.0001\n",
      "Epoch: 8210/20000, Loss: 0.0001\n",
      "Epoch: 8220/20000, Loss: 0.0001\n",
      "Epoch: 8230/20000, Loss: 0.0000\n",
      "Epoch: 8240/20000, Loss: 0.0000\n",
      "Epoch: 8250/20000, Loss: 0.0004\n",
      "Epoch: 8260/20000, Loss: 0.0003\n",
      "Epoch: 8270/20000, Loss: 0.0001\n",
      "Epoch: 8280/20000, Loss: 0.0001\n",
      "Epoch: 8290/20000, Loss: 0.0000\n",
      "Epoch: 8300/20000, Loss: 0.0000\n",
      "Epoch: 8310/20000, Loss: 0.0004\n",
      "Epoch: 8320/20000, Loss: 0.0001\n",
      "Epoch: 8330/20000, Loss: 0.0000\n",
      "Epoch: 8340/20000, Loss: 0.0000\n",
      "Epoch: 8350/20000, Loss: 0.0000\n",
      "Epoch: 8360/20000, Loss: 0.0000\n",
      "Epoch: 8370/20000, Loss: 0.0002\n",
      "Epoch: 8380/20000, Loss: 0.0001\n",
      "Epoch: 8390/20000, Loss: 0.0000\n",
      "Epoch: 8400/20000, Loss: 0.0000\n",
      "Epoch: 8410/20000, Loss: 0.0000\n",
      "Epoch: 8420/20000, Loss: 0.0006\n",
      "Epoch: 8430/20000, Loss: 0.0001\n",
      "Epoch: 8440/20000, Loss: 0.0001\n",
      "Epoch: 8450/20000, Loss: 0.0001\n",
      "Epoch: 8460/20000, Loss: 0.0001\n",
      "Epoch: 8470/20000, Loss: 0.0000\n",
      "Epoch: 8480/20000, Loss: 0.0000\n",
      "Epoch: 8490/20000, Loss: 0.0001\n",
      "Epoch: 8500/20000, Loss: 0.0000\n",
      "Epoch: 8510/20000, Loss: 0.0002\n",
      "Epoch: 8520/20000, Loss: 0.0000\n",
      "Epoch: 8530/20000, Loss: 0.0000\n",
      "Epoch: 8540/20000, Loss: 0.0001\n",
      "Epoch: 8550/20000, Loss: 0.0005\n",
      "Epoch: 8560/20000, Loss: 0.0002\n",
      "Epoch: 8570/20000, Loss: 0.0000\n",
      "Epoch: 8580/20000, Loss: 0.0000\n",
      "Epoch: 8590/20000, Loss: 0.0000\n",
      "Epoch: 8600/20000, Loss: 0.0000\n",
      "Epoch: 8610/20000, Loss: 0.0000\n",
      "Epoch: 8620/20000, Loss: 0.0001\n",
      "Epoch: 8630/20000, Loss: 0.0002\n",
      "Epoch: 8640/20000, Loss: 0.0000\n",
      "Epoch: 8650/20000, Loss: 0.0000\n",
      "Epoch: 8660/20000, Loss: 0.0004\n",
      "Epoch: 8670/20000, Loss: 0.0001\n",
      "Epoch: 8680/20000, Loss: 0.0001\n",
      "Epoch: 8690/20000, Loss: 0.0000\n",
      "Epoch: 8700/20000, Loss: 0.0000\n",
      "Epoch: 8710/20000, Loss: 0.0004\n",
      "Epoch: 8720/20000, Loss: 0.0002\n",
      "Epoch: 8730/20000, Loss: 0.0001\n",
      "Epoch: 8740/20000, Loss: 0.0000\n",
      "Epoch: 8750/20000, Loss: 0.0000\n",
      "Epoch: 8760/20000, Loss: 0.0000\n",
      "Epoch: 8770/20000, Loss: 0.0002\n",
      "Epoch: 8780/20000, Loss: 0.0002\n",
      "Epoch: 8790/20000, Loss: 0.0000\n",
      "Epoch: 8800/20000, Loss: 0.0000\n",
      "Epoch: 8810/20000, Loss: 0.0000\n",
      "Epoch: 8820/20000, Loss: 0.0000\n",
      "Epoch: 8830/20000, Loss: 0.0006\n",
      "Epoch: 8840/20000, Loss: 0.0001\n",
      "Epoch: 8850/20000, Loss: 0.0001\n",
      "Epoch: 8860/20000, Loss: 0.0000\n",
      "Epoch: 8870/20000, Loss: 0.0000\n",
      "Epoch: 8880/20000, Loss: 0.0001\n",
      "Epoch: 8890/20000, Loss: 0.0000\n",
      "Epoch: 8900/20000, Loss: 0.0000\n",
      "Epoch: 8910/20000, Loss: 0.0000\n",
      "Epoch: 8920/20000, Loss: 0.0006\n",
      "Epoch: 8930/20000, Loss: 0.0001\n",
      "Epoch: 8940/20000, Loss: 0.0001\n",
      "Epoch: 8950/20000, Loss: 0.0000\n",
      "Epoch: 8960/20000, Loss: 0.0000\n",
      "Epoch: 8970/20000, Loss: 0.0000\n",
      "Epoch: 8980/20000, Loss: 0.0001\n",
      "Epoch: 8990/20000, Loss: 0.0000\n",
      "Epoch: 9000/20000, Loss: 0.0000\n",
      "Epoch: 9010/20000, Loss: 0.0000\n",
      "Epoch: 9020/20000, Loss: 0.0006\n",
      "Epoch: 9030/20000, Loss: 0.0002\n",
      "Epoch: 9040/20000, Loss: 0.0001\n",
      "Epoch: 9050/20000, Loss: 0.0000\n",
      "Epoch: 9060/20000, Loss: 0.0000\n",
      "Epoch: 9070/20000, Loss: 0.0000\n",
      "Epoch: 9080/20000, Loss: 0.0001\n",
      "Epoch: 9090/20000, Loss: 0.0001\n",
      "Epoch: 9100/20000, Loss: 0.0001\n",
      "Epoch: 9110/20000, Loss: 0.0001\n",
      "Epoch: 9120/20000, Loss: 0.0001\n",
      "Epoch: 9130/20000, Loss: 0.0001\n",
      "Epoch: 9140/20000, Loss: 0.0000\n",
      "Epoch: 9150/20000, Loss: 0.0000\n",
      "Epoch: 9160/20000, Loss: 0.0000\n",
      "Epoch: 9170/20000, Loss: 0.0001\n",
      "Epoch: 9180/20000, Loss: 0.0008\n",
      "Epoch: 9190/20000, Loss: 0.0001\n",
      "Epoch: 9200/20000, Loss: 0.0001\n",
      "Epoch: 9210/20000, Loss: 0.0000\n",
      "Epoch: 9220/20000, Loss: 0.0000\n",
      "Epoch: 9230/20000, Loss: 0.0000\n",
      "Epoch: 9240/20000, Loss: 0.0000\n",
      "Epoch: 9250/20000, Loss: 0.0000\n",
      "Epoch: 9260/20000, Loss: 0.0000\n",
      "Epoch: 9270/20000, Loss: 0.0007\n",
      "Epoch: 9280/20000, Loss: 0.0001\n",
      "Epoch: 9290/20000, Loss: 0.0000\n",
      "Epoch: 9300/20000, Loss: 0.0000\n",
      "Epoch: 9310/20000, Loss: 0.0000\n",
      "Epoch: 9320/20000, Loss: 0.0000\n",
      "Epoch: 9330/20000, Loss: 0.0000\n",
      "Epoch: 9340/20000, Loss: 0.0001\n",
      "Epoch: 9350/20000, Loss: 0.0005\n",
      "Epoch: 9360/20000, Loss: 0.0001\n",
      "Epoch: 9370/20000, Loss: 0.0000\n",
      "Epoch: 9380/20000, Loss: 0.0000\n",
      "Epoch: 9390/20000, Loss: 0.0000\n",
      "Epoch: 9400/20000, Loss: 0.0000\n",
      "Epoch: 9410/20000, Loss: 0.0002\n",
      "Epoch: 9420/20000, Loss: 0.0001\n",
      "Epoch: 9430/20000, Loss: 0.0000\n",
      "Epoch: 9440/20000, Loss: 0.0000\n",
      "Epoch: 9450/20000, Loss: 0.0002\n",
      "Epoch: 9460/20000, Loss: 0.0001\n",
      "Epoch: 9470/20000, Loss: 0.0001\n",
      "Epoch: 9480/20000, Loss: 0.0000\n",
      "Epoch: 9490/20000, Loss: 0.0000\n",
      "Epoch: 9500/20000, Loss: 0.0000\n",
      "Epoch: 9510/20000, Loss: 0.0001\n",
      "Epoch: 9520/20000, Loss: 0.0000\n",
      "Epoch: 9530/20000, Loss: 0.0000\n",
      "Epoch: 9540/20000, Loss: 0.0001\n",
      "Epoch: 9550/20000, Loss: 0.0003\n",
      "Epoch: 9560/20000, Loss: 0.0002\n",
      "Epoch: 9570/20000, Loss: 0.0001\n",
      "Epoch: 9580/20000, Loss: 0.0000\n",
      "Epoch: 9590/20000, Loss: 0.0000\n",
      "Epoch: 9600/20000, Loss: 0.0000\n",
      "Epoch: 9610/20000, Loss: 0.0000\n",
      "Epoch: 9620/20000, Loss: 0.0000\n",
      "Epoch: 9630/20000, Loss: 0.0002\n",
      "Epoch: 9640/20000, Loss: 0.0001\n",
      "Epoch: 9650/20000, Loss: 0.0001\n",
      "Epoch: 9660/20000, Loss: 0.0000\n",
      "Epoch: 9670/20000, Loss: 0.0000\n",
      "Epoch: 9680/20000, Loss: 0.0002\n",
      "Epoch: 9690/20000, Loss: 0.0000\n",
      "Epoch: 9700/20000, Loss: 0.0000\n",
      "Epoch: 9710/20000, Loss: 0.0000\n",
      "Epoch: 9720/20000, Loss: 0.0004\n",
      "Epoch: 9730/20000, Loss: 0.0002\n",
      "Epoch: 9740/20000, Loss: 0.0001\n",
      "Epoch: 9750/20000, Loss: 0.0000\n",
      "Epoch: 9760/20000, Loss: 0.0000\n",
      "Epoch: 9770/20000, Loss: 0.0000\n",
      "Epoch: 9780/20000, Loss: 0.0000\n",
      "Epoch: 9790/20000, Loss: 0.0000\n",
      "Epoch: 9800/20000, Loss: 0.0001\n",
      "Epoch: 9810/20000, Loss: 0.0002\n",
      "Epoch: 9820/20000, Loss: 0.0001\n",
      "Epoch: 9830/20000, Loss: 0.0001\n",
      "Epoch: 9840/20000, Loss: 0.0000\n",
      "Epoch: 9850/20000, Loss: 0.0000\n",
      "Epoch: 9860/20000, Loss: 0.0001\n",
      "Epoch: 9870/20000, Loss: 0.0000\n",
      "Epoch: 9880/20000, Loss: 0.0000\n",
      "Epoch: 9890/20000, Loss: 0.0000\n",
      "Epoch: 9900/20000, Loss: 0.0002\n",
      "Epoch: 9910/20000, Loss: 0.0002\n",
      "Epoch: 9920/20000, Loss: 0.0001\n",
      "Epoch: 9930/20000, Loss: 0.0000\n",
      "Epoch: 9940/20000, Loss: 0.0000\n",
      "Epoch: 9950/20000, Loss: 0.0000\n",
      "Epoch: 9960/20000, Loss: 0.0000\n",
      "Epoch: 9970/20000, Loss: 0.0001\n",
      "Epoch: 9980/20000, Loss: 0.0001\n",
      "Epoch: 9990/20000, Loss: 0.0001\n",
      "Epoch: 10000/20000, Loss: 0.0000\n",
      "Epoch: 10010/20000, Loss: 0.0000\n",
      "Epoch: 10020/20000, Loss: 0.0003\n",
      "Epoch: 10030/20000, Loss: 0.0000\n",
      "Epoch: 10040/20000, Loss: 0.0000\n",
      "Epoch: 10050/20000, Loss: 0.0000\n",
      "Epoch: 10060/20000, Loss: 0.0004\n",
      "Epoch: 10070/20000, Loss: 0.0001\n",
      "Epoch: 10080/20000, Loss: 0.0001\n",
      "Epoch: 10090/20000, Loss: 0.0000\n",
      "Epoch: 10100/20000, Loss: 0.0001\n",
      "Epoch: 10110/20000, Loss: 0.0002\n",
      "Epoch: 10120/20000, Loss: 0.0001\n",
      "Epoch: 10130/20000, Loss: 0.0000\n",
      "Epoch: 10140/20000, Loss: 0.0000\n",
      "Epoch: 10150/20000, Loss: 0.0000\n",
      "Epoch: 10160/20000, Loss: 0.0001\n",
      "Epoch: 10170/20000, Loss: 0.0001\n",
      "Epoch: 10180/20000, Loss: 0.0001\n",
      "Epoch: 10190/20000, Loss: 0.0000\n",
      "Epoch: 10200/20000, Loss: 0.0003\n",
      "Epoch: 10210/20000, Loss: 0.0001\n",
      "Epoch: 10220/20000, Loss: 0.0001\n",
      "Epoch: 10230/20000, Loss: 0.0001\n",
      "Epoch: 10240/20000, Loss: 0.0001\n",
      "Epoch: 10250/20000, Loss: 0.0000\n",
      "Epoch: 10260/20000, Loss: 0.0000\n",
      "Epoch: 10270/20000, Loss: 0.0000\n",
      "Epoch: 10280/20000, Loss: 0.0004\n",
      "Epoch: 10290/20000, Loss: 0.0001\n",
      "Epoch: 10300/20000, Loss: 0.0001\n",
      "Epoch: 10310/20000, Loss: 0.0000\n",
      "Epoch: 10320/20000, Loss: 0.0000\n",
      "Epoch: 10330/20000, Loss: 0.0002\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 10340/20000, Loss: 0.0001\n",
      "Epoch: 10350/20000, Loss: 0.0000\n",
      "Epoch: 10360/20000, Loss: 0.0000\n",
      "Epoch: 10370/20000, Loss: 0.0002\n",
      "Epoch: 10380/20000, Loss: 0.0012\n",
      "Epoch: 10390/20000, Loss: 0.0019\n",
      "Epoch: 10400/20000, Loss: 0.0012\n",
      "Epoch: 10410/20000, Loss: 0.0003\n",
      "Epoch: 10420/20000, Loss: 0.0001\n",
      "Epoch: 10430/20000, Loss: 0.0001\n",
      "Epoch: 10440/20000, Loss: 0.0000\n",
      "Epoch: 10450/20000, Loss: 0.0013\n",
      "Epoch: 10460/20000, Loss: 0.0002\n",
      "Epoch: 10470/20000, Loss: 0.0001\n",
      "Epoch: 10480/20000, Loss: 0.0001\n",
      "Epoch: 10490/20000, Loss: 0.0000\n",
      "Epoch: 10500/20000, Loss: 0.0000\n",
      "Epoch: 10510/20000, Loss: 0.0000\n",
      "Epoch: 10520/20000, Loss: 0.0000\n",
      "Epoch: 10530/20000, Loss: 0.0000\n",
      "Epoch: 10540/20000, Loss: 0.0002\n",
      "Epoch: 10550/20000, Loss: 0.0001\n",
      "Epoch: 10560/20000, Loss: 0.0000\n",
      "Epoch: 10570/20000, Loss: 0.0000\n",
      "Epoch: 10580/20000, Loss: 0.0000\n",
      "Epoch: 10590/20000, Loss: 0.0000\n",
      "Epoch: 10600/20000, Loss: 0.0000\n",
      "Epoch: 10610/20000, Loss: 0.0001\n",
      "Epoch: 10620/20000, Loss: 0.0000\n",
      "Epoch: 10630/20000, Loss: 0.0000\n",
      "Epoch: 10640/20000, Loss: 0.0000\n",
      "Epoch: 10650/20000, Loss: 0.0000\n",
      "Epoch: 10660/20000, Loss: 0.0000\n",
      "Epoch: 10670/20000, Loss: 0.0001\n",
      "Epoch: 10680/20000, Loss: 0.0003\n",
      "Epoch: 10690/20000, Loss: 0.0000\n",
      "Epoch: 10700/20000, Loss: 0.0000\n",
      "Epoch: 10710/20000, Loss: 0.0000\n",
      "Epoch: 10720/20000, Loss: 0.0000\n",
      "Epoch: 10730/20000, Loss: 0.0002\n",
      "Epoch: 10740/20000, Loss: 0.0001\n",
      "Epoch: 10750/20000, Loss: 0.0000\n",
      "Epoch: 10760/20000, Loss: 0.0000\n",
      "Epoch: 10770/20000, Loss: 0.0000\n",
      "Epoch: 10780/20000, Loss: 0.0000\n",
      "Epoch: 10790/20000, Loss: 0.0000\n",
      "Epoch: 10800/20000, Loss: 0.0003\n",
      "Epoch: 10810/20000, Loss: 0.0002\n",
      "Epoch: 10820/20000, Loss: 0.0001\n",
      "Epoch: 10830/20000, Loss: 0.0001\n",
      "Epoch: 10840/20000, Loss: 0.0000\n",
      "Epoch: 10850/20000, Loss: 0.0000\n",
      "Epoch: 10860/20000, Loss: 0.0000\n",
      "Epoch: 10870/20000, Loss: 0.0000\n",
      "Epoch: 10880/20000, Loss: 0.0001\n",
      "Epoch: 10890/20000, Loss: 0.0001\n",
      "Epoch: 10900/20000, Loss: 0.0001\n",
      "Epoch: 10910/20000, Loss: 0.0000\n",
      "Epoch: 10920/20000, Loss: 0.0001\n",
      "Epoch: 10930/20000, Loss: 0.0001\n",
      "Epoch: 10940/20000, Loss: 0.0000\n",
      "Epoch: 10950/20000, Loss: 0.0000\n",
      "Epoch: 10960/20000, Loss: 0.0000\n",
      "Epoch: 10970/20000, Loss: 0.0004\n",
      "Epoch: 10980/20000, Loss: 0.0001\n",
      "Epoch: 10990/20000, Loss: 0.0001\n",
      "Epoch: 11000/20000, Loss: 0.0002\n",
      "Epoch: 11010/20000, Loss: 0.0000\n",
      "Epoch: 11020/20000, Loss: 0.0000\n",
      "Epoch: 11030/20000, Loss: 0.0000\n",
      "Epoch: 11040/20000, Loss: 0.0001\n",
      "Epoch: 11050/20000, Loss: 0.0000\n",
      "Epoch: 11060/20000, Loss: 0.0000\n",
      "Epoch: 11070/20000, Loss: 0.0000\n",
      "Epoch: 11080/20000, Loss: 0.0001\n",
      "Epoch: 11090/20000, Loss: 0.0002\n",
      "Epoch: 11100/20000, Loss: 0.0001\n",
      "Epoch: 11110/20000, Loss: 0.0004\n",
      "Epoch: 11120/20000, Loss: 0.0001\n",
      "Epoch: 11130/20000, Loss: 0.0000\n",
      "Epoch: 11140/20000, Loss: 0.0000\n",
      "Epoch: 11150/20000, Loss: 0.0000\n",
      "Epoch: 11160/20000, Loss: 0.0000\n",
      "Epoch: 11170/20000, Loss: 0.0004\n",
      "Epoch: 11180/20000, Loss: 0.0005\n",
      "Epoch: 11190/20000, Loss: 0.0002\n",
      "Epoch: 11200/20000, Loss: 0.0001\n",
      "Epoch: 11210/20000, Loss: 0.0000\n",
      "Epoch: 11220/20000, Loss: 0.0000\n",
      "Epoch: 11230/20000, Loss: 0.0000\n",
      "Epoch: 11240/20000, Loss: 0.0000\n",
      "Epoch: 11250/20000, Loss: 0.0000\n",
      "Epoch: 11260/20000, Loss: 0.0001\n",
      "Epoch: 11270/20000, Loss: 0.0001\n",
      "Epoch: 11280/20000, Loss: 0.0000\n",
      "Epoch: 11290/20000, Loss: 0.0000\n",
      "Epoch: 11300/20000, Loss: 0.0000\n",
      "Epoch: 11310/20000, Loss: 0.0005\n",
      "Epoch: 11320/20000, Loss: 0.0001\n",
      "Epoch: 11330/20000, Loss: 0.0001\n",
      "Epoch: 11340/20000, Loss: 0.0001\n",
      "Epoch: 11350/20000, Loss: 0.0001\n",
      "Epoch: 11360/20000, Loss: 0.0001\n",
      "Epoch: 11370/20000, Loss: 0.0000\n",
      "Epoch: 11380/20000, Loss: 0.0000\n",
      "Epoch: 11390/20000, Loss: 0.0000\n",
      "Epoch: 11400/20000, Loss: 0.0000\n",
      "Epoch: 11410/20000, Loss: 0.0001\n",
      "Epoch: 11420/20000, Loss: 0.0001\n",
      "Epoch: 11430/20000, Loss: 0.0001\n",
      "Epoch: 11440/20000, Loss: 0.0001\n",
      "Epoch: 11450/20000, Loss: 0.0000\n",
      "Epoch: 11460/20000, Loss: 0.0000\n",
      "Epoch: 11470/20000, Loss: 0.0000\n",
      "Epoch: 11480/20000, Loss: 0.0000\n",
      "Epoch: 11490/20000, Loss: 0.0002\n",
      "Epoch: 11500/20000, Loss: 0.0001\n",
      "Epoch: 11510/20000, Loss: 0.0000\n",
      "Epoch: 11520/20000, Loss: 0.0000\n",
      "Epoch: 11530/20000, Loss: 0.0005\n",
      "Epoch: 11540/20000, Loss: 0.0002\n",
      "Epoch: 11550/20000, Loss: 0.0001\n",
      "Epoch: 11560/20000, Loss: 0.0000\n",
      "Epoch: 11570/20000, Loss: 0.0001\n",
      "Epoch: 11580/20000, Loss: 0.0001\n",
      "Epoch: 11590/20000, Loss: 0.0001\n",
      "Epoch: 11600/20000, Loss: 0.0000\n",
      "Epoch: 11610/20000, Loss: 0.0000\n",
      "Epoch: 11620/20000, Loss: 0.0000\n",
      "Epoch: 11630/20000, Loss: 0.0000\n",
      "Epoch: 11640/20000, Loss: 0.0000\n",
      "Epoch: 11650/20000, Loss: 0.0001\n",
      "Epoch: 11660/20000, Loss: 0.0008\n",
      "Epoch: 11670/20000, Loss: 0.0003\n",
      "Epoch: 11680/20000, Loss: 0.0001\n",
      "Epoch: 11690/20000, Loss: 0.0001\n",
      "Epoch: 11700/20000, Loss: 0.0000\n",
      "Epoch: 11710/20000, Loss: 0.0000\n",
      "Epoch: 11720/20000, Loss: 0.0000\n",
      "Epoch: 11730/20000, Loss: 0.0000\n",
      "Epoch: 11740/20000, Loss: 0.0000\n",
      "Epoch: 11750/20000, Loss: 0.0000\n",
      "Epoch: 11760/20000, Loss: 0.0001\n",
      "Epoch: 11770/20000, Loss: 0.0001\n",
      "Epoch: 11780/20000, Loss: 0.0001\n",
      "Epoch: 11790/20000, Loss: 0.0000\n",
      "Epoch: 11800/20000, Loss: 0.0000\n",
      "Epoch: 11810/20000, Loss: 0.0000\n",
      "Epoch: 11820/20000, Loss: 0.0000\n",
      "Epoch: 11830/20000, Loss: 0.0000\n",
      "Epoch: 11840/20000, Loss: 0.0000\n",
      "Epoch: 11850/20000, Loss: 0.0002\n",
      "Epoch: 11860/20000, Loss: 0.0002\n",
      "Epoch: 11870/20000, Loss: 0.0001\n",
      "Epoch: 11880/20000, Loss: 0.0000\n",
      "Epoch: 11890/20000, Loss: 0.0002\n",
      "Epoch: 11900/20000, Loss: 0.0000\n",
      "Epoch: 11910/20000, Loss: 0.0000\n",
      "Epoch: 11920/20000, Loss: 0.0000\n",
      "Epoch: 11930/20000, Loss: 0.0000\n",
      "Epoch: 11940/20000, Loss: 0.0002\n",
      "Epoch: 11950/20000, Loss: 0.0001\n",
      "Epoch: 11960/20000, Loss: 0.0000\n",
      "Epoch: 11970/20000, Loss: 0.0000\n",
      "Epoch: 11980/20000, Loss: 0.0001\n",
      "Epoch: 11990/20000, Loss: 0.0002\n",
      "Epoch: 12000/20000, Loss: 0.0001\n",
      "Epoch: 12010/20000, Loss: 0.0000\n",
      "Epoch: 12020/20000, Loss: 0.0000\n",
      "Epoch: 12030/20000, Loss: 0.0000\n",
      "Epoch: 12040/20000, Loss: 0.0009\n",
      "Epoch: 12050/20000, Loss: 0.0002\n",
      "Epoch: 12060/20000, Loss: 0.0001\n",
      "Epoch: 12070/20000, Loss: 0.0000\n",
      "Epoch: 12080/20000, Loss: 0.0000\n",
      "Epoch: 12090/20000, Loss: 0.0001\n",
      "Epoch: 12100/20000, Loss: 0.0001\n",
      "Epoch: 12110/20000, Loss: 0.0000\n",
      "Epoch: 12120/20000, Loss: 0.0000\n",
      "Epoch: 12130/20000, Loss: 0.0000\n",
      "Epoch: 12140/20000, Loss: 0.0000\n",
      "Epoch: 12150/20000, Loss: 0.0003\n",
      "Epoch: 12160/20000, Loss: 0.0001\n",
      "Epoch: 12170/20000, Loss: 0.0000\n",
      "Epoch: 12180/20000, Loss: 0.0000\n",
      "Epoch: 12190/20000, Loss: 0.0000\n",
      "Epoch: 12200/20000, Loss: 0.0002\n",
      "Epoch: 12210/20000, Loss: 0.0001\n",
      "Epoch: 12220/20000, Loss: 0.0002\n",
      "Epoch: 12230/20000, Loss: 0.0000\n",
      "Epoch: 12240/20000, Loss: 0.0000\n",
      "Epoch: 12250/20000, Loss: 0.0000\n",
      "Epoch: 12260/20000, Loss: 0.0002\n",
      "Epoch: 12270/20000, Loss: 0.0000\n",
      "Epoch: 12280/20000, Loss: 0.0001\n",
      "Epoch: 12290/20000, Loss: 0.0001\n",
      "Epoch: 12300/20000, Loss: 0.0000\n",
      "Epoch: 12310/20000, Loss: 0.0001\n",
      "Epoch: 12320/20000, Loss: 0.0006\n",
      "Epoch: 12330/20000, Loss: 0.0002\n",
      "Epoch: 12340/20000, Loss: 0.0001\n",
      "Epoch: 12350/20000, Loss: 0.0000\n",
      "Epoch: 12360/20000, Loss: 0.0000\n",
      "Epoch: 12370/20000, Loss: 0.0000\n",
      "Epoch: 12380/20000, Loss: 0.0001\n",
      "Epoch: 12390/20000, Loss: 0.0005\n",
      "Epoch: 12400/20000, Loss: 0.0001\n",
      "Epoch: 12410/20000, Loss: 0.0001\n",
      "Epoch: 12420/20000, Loss: 0.0000\n",
      "Epoch: 12430/20000, Loss: 0.0004\n",
      "Epoch: 12440/20000, Loss: 0.0001\n",
      "Epoch: 12450/20000, Loss: 0.0000\n",
      "Epoch: 12460/20000, Loss: 0.0000\n",
      "Epoch: 12470/20000, Loss: 0.0000\n",
      "Epoch: 12480/20000, Loss: 0.0001\n",
      "Epoch: 12490/20000, Loss: 0.0004\n",
      "Epoch: 12500/20000, Loss: 0.0001\n",
      "Epoch: 12510/20000, Loss: 0.0000\n",
      "Epoch: 12520/20000, Loss: 0.0000\n",
      "Epoch: 12530/20000, Loss: 0.0000\n",
      "Epoch: 12540/20000, Loss: 0.0003\n",
      "Epoch: 12550/20000, Loss: 0.0002\n",
      "Epoch: 12560/20000, Loss: 0.0001\n",
      "Epoch: 12570/20000, Loss: 0.0000\n",
      "Epoch: 12580/20000, Loss: 0.0000\n",
      "Epoch: 12590/20000, Loss: 0.0000\n",
      "Epoch: 12600/20000, Loss: 0.0005\n",
      "Epoch: 12610/20000, Loss: 0.0001\n",
      "Epoch: 12620/20000, Loss: 0.0000\n",
      "Epoch: 12630/20000, Loss: 0.0000\n",
      "Epoch: 12640/20000, Loss: 0.0000\n",
      "Epoch: 12650/20000, Loss: 0.0000\n",
      "Epoch: 12660/20000, Loss: 0.0001\n",
      "Epoch: 12670/20000, Loss: 0.0003\n",
      "Epoch: 12680/20000, Loss: 0.0001\n",
      "Epoch: 12690/20000, Loss: 0.0001\n",
      "Epoch: 12700/20000, Loss: 0.0000\n",
      "Epoch: 12710/20000, Loss: 0.0000\n",
      "Epoch: 12720/20000, Loss: 0.0001\n",
      "Epoch: 12730/20000, Loss: 0.0004\n",
      "Epoch: 12740/20000, Loss: 0.0001\n",
      "Epoch: 12750/20000, Loss: 0.0000\n",
      "Epoch: 12760/20000, Loss: 0.0000\n",
      "Epoch: 12770/20000, Loss: 0.0000\n",
      "Epoch: 12780/20000, Loss: 0.0000\n",
      "Epoch: 12790/20000, Loss: 0.0000\n",
      "Epoch: 12800/20000, Loss: 0.0001\n",
      "Epoch: 12810/20000, Loss: 0.0001\n",
      "Epoch: 12820/20000, Loss: 0.0000\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 12830/20000, Loss: 0.0000\n",
      "Epoch: 12840/20000, Loss: 0.0000\n",
      "Epoch: 12850/20000, Loss: 0.0001\n",
      "Epoch: 12860/20000, Loss: 0.0002\n",
      "Epoch: 12870/20000, Loss: 0.0001\n",
      "Epoch: 12880/20000, Loss: 0.0000\n",
      "Epoch: 12890/20000, Loss: 0.0000\n",
      "Epoch: 12900/20000, Loss: 0.0001\n",
      "Epoch: 12910/20000, Loss: 0.0002\n",
      "Epoch: 12920/20000, Loss: 0.0001\n",
      "Epoch: 12930/20000, Loss: 0.0000\n",
      "Epoch: 12940/20000, Loss: 0.0000\n",
      "Epoch: 12950/20000, Loss: 0.0001\n",
      "Epoch: 12960/20000, Loss: 0.0002\n",
      "Epoch: 12970/20000, Loss: 0.0001\n",
      "Epoch: 12980/20000, Loss: 0.0000\n",
      "Epoch: 12990/20000, Loss: 0.0000\n",
      "Epoch: 13000/20000, Loss: 0.0001\n",
      "Epoch: 13010/20000, Loss: 0.0002\n",
      "Epoch: 13020/20000, Loss: 0.0001\n",
      "Epoch: 13030/20000, Loss: 0.0001\n",
      "Epoch: 13040/20000, Loss: 0.0002\n",
      "Epoch: 13050/20000, Loss: 0.0001\n",
      "Epoch: 13060/20000, Loss: 0.0000\n",
      "Epoch: 13070/20000, Loss: 0.0000\n",
      "Epoch: 13080/20000, Loss: 0.0000\n",
      "Epoch: 13090/20000, Loss: 0.0002\n",
      "Epoch: 13100/20000, Loss: 0.0001\n",
      "Epoch: 13110/20000, Loss: 0.0001\n",
      "Epoch: 13120/20000, Loss: 0.0000\n",
      "Epoch: 13130/20000, Loss: 0.0000\n",
      "Epoch: 13140/20000, Loss: 0.0000\n",
      "Epoch: 13150/20000, Loss: 0.0002\n",
      "Epoch: 13160/20000, Loss: 0.0001\n",
      "Epoch: 13170/20000, Loss: 0.0001\n",
      "Epoch: 13180/20000, Loss: 0.0000\n",
      "Epoch: 13190/20000, Loss: 0.0000\n",
      "Epoch: 13200/20000, Loss: 0.0000\n",
      "Epoch: 13210/20000, Loss: 0.0000\n",
      "Epoch: 13220/20000, Loss: 0.0001\n",
      "Epoch: 13230/20000, Loss: 0.0001\n",
      "Epoch: 13240/20000, Loss: 0.0001\n",
      "Epoch: 13250/20000, Loss: 0.0000\n",
      "Epoch: 13260/20000, Loss: 0.0000\n",
      "Epoch: 13270/20000, Loss: 0.0001\n",
      "Epoch: 13280/20000, Loss: 0.0003\n",
      "Epoch: 13290/20000, Loss: 0.0000\n",
      "Epoch: 13300/20000, Loss: 0.0000\n",
      "Epoch: 13310/20000, Loss: 0.0000\n",
      "Epoch: 13320/20000, Loss: 0.0000\n",
      "Epoch: 13330/20000, Loss: 0.0001\n",
      "Epoch: 13340/20000, Loss: 0.0002\n",
      "Epoch: 13350/20000, Loss: 0.0001\n",
      "Epoch: 13360/20000, Loss: 0.0000\n",
      "Epoch: 13370/20000, Loss: 0.0000\n",
      "Epoch: 13380/20000, Loss: 0.0000\n",
      "Epoch: 13390/20000, Loss: 0.0003\n",
      "Epoch: 13400/20000, Loss: 0.0001\n",
      "Epoch: 13410/20000, Loss: 0.0001\n",
      "Epoch: 13420/20000, Loss: 0.0000\n",
      "Epoch: 13430/20000, Loss: 0.0000\n",
      "Epoch: 13440/20000, Loss: 0.0001\n",
      "Epoch: 13450/20000, Loss: 0.0005\n",
      "Epoch: 13460/20000, Loss: 0.0001\n",
      "Epoch: 13470/20000, Loss: 0.0000\n",
      "Epoch: 13480/20000, Loss: 0.0000\n",
      "Epoch: 13490/20000, Loss: 0.0000\n",
      "Epoch: 13500/20000, Loss: 0.0006\n",
      "Epoch: 13510/20000, Loss: 0.0001\n",
      "Epoch: 13520/20000, Loss: 0.0000\n",
      "Epoch: 13530/20000, Loss: 0.0000\n",
      "Epoch: 13540/20000, Loss: 0.0000\n",
      "Epoch: 13550/20000, Loss: 0.0002\n",
      "Epoch: 13560/20000, Loss: 0.0001\n",
      "Epoch: 13570/20000, Loss: 0.0000\n",
      "Epoch: 13580/20000, Loss: 0.0000\n",
      "Epoch: 13590/20000, Loss: 0.0000\n",
      "Epoch: 13600/20000, Loss: 0.0000\n",
      "Epoch: 13610/20000, Loss: 0.0002\n",
      "Epoch: 13620/20000, Loss: 0.0001\n",
      "Epoch: 13630/20000, Loss: 0.0000\n",
      "Epoch: 13640/20000, Loss: 0.0000\n",
      "Epoch: 13650/20000, Loss: 0.0001\n",
      "Epoch: 13660/20000, Loss: 0.0002\n",
      "Epoch: 13670/20000, Loss: 0.0001\n",
      "Epoch: 13680/20000, Loss: 0.0000\n",
      "Epoch: 13690/20000, Loss: 0.0000\n",
      "Epoch: 13700/20000, Loss: 0.0000\n",
      "Epoch: 13710/20000, Loss: 0.0001\n",
      "Epoch: 13720/20000, Loss: 0.0003\n",
      "Epoch: 13730/20000, Loss: 0.0001\n",
      "Epoch: 13740/20000, Loss: 0.0001\n",
      "Epoch: 13750/20000, Loss: 0.0001\n",
      "Epoch: 13760/20000, Loss: 0.0001\n",
      "Epoch: 13770/20000, Loss: 0.0000\n",
      "Epoch: 13780/20000, Loss: 0.0002\n",
      "Epoch: 13790/20000, Loss: 0.0001\n",
      "Epoch: 13800/20000, Loss: 0.0000\n",
      "Epoch: 13810/20000, Loss: 0.0000\n",
      "Epoch: 13820/20000, Loss: 0.0000\n",
      "Epoch: 13830/20000, Loss: 0.0003\n",
      "Epoch: 13840/20000, Loss: 0.0001\n",
      "Epoch: 13850/20000, Loss: 0.0001\n",
      "Epoch: 13860/20000, Loss: 0.0001\n",
      "Epoch: 13870/20000, Loss: 0.0000\n",
      "Epoch: 13880/20000, Loss: 0.0001\n",
      "Epoch: 13890/20000, Loss: 0.0003\n",
      "Epoch: 13900/20000, Loss: 0.0001\n",
      "Epoch: 13910/20000, Loss: 0.0000\n",
      "Epoch: 13920/20000, Loss: 0.0000\n",
      "Epoch: 13930/20000, Loss: 0.0000\n",
      "Epoch: 13940/20000, Loss: 0.0001\n",
      "Epoch: 13950/20000, Loss: 0.0002\n",
      "Epoch: 13960/20000, Loss: 0.0001\n",
      "Epoch: 13970/20000, Loss: 0.0000\n",
      "Epoch: 13980/20000, Loss: 0.0004\n",
      "Epoch: 13990/20000, Loss: 0.0001\n",
      "Epoch: 14000/20000, Loss: 0.0001\n",
      "Epoch: 14010/20000, Loss: 0.0001\n",
      "Epoch: 14020/20000, Loss: 0.0000\n",
      "Epoch: 14030/20000, Loss: 0.0000\n",
      "Epoch: 14040/20000, Loss: 0.0000\n",
      "Epoch: 14050/20000, Loss: 0.0002\n",
      "Epoch: 14060/20000, Loss: 0.0001\n",
      "Epoch: 14070/20000, Loss: 0.0000\n",
      "Epoch: 14080/20000, Loss: 0.0000\n",
      "Epoch: 14090/20000, Loss: 0.0000\n",
      "Epoch: 14100/20000, Loss: 0.0003\n",
      "Epoch: 14110/20000, Loss: 0.0004\n",
      "Epoch: 14120/20000, Loss: 0.0002\n",
      "Epoch: 14130/20000, Loss: 0.0000\n",
      "Epoch: 14140/20000, Loss: 0.0000\n",
      "Epoch: 14150/20000, Loss: 0.0000\n",
      "Epoch: 14160/20000, Loss: 0.0000\n",
      "Epoch: 14170/20000, Loss: 0.0003\n",
      "Epoch: 14180/20000, Loss: 0.0001\n",
      "Epoch: 14190/20000, Loss: 0.0000\n",
      "Epoch: 14200/20000, Loss: 0.0000\n",
      "Epoch: 14210/20000, Loss: 0.0000\n",
      "Epoch: 14220/20000, Loss: 0.0000\n",
      "Epoch: 14230/20000, Loss: 0.0005\n",
      "Epoch: 14240/20000, Loss: 0.0001\n",
      "Epoch: 14250/20000, Loss: 0.0000\n",
      "Epoch: 14260/20000, Loss: 0.0000\n",
      "Epoch: 14270/20000, Loss: 0.0000\n",
      "Epoch: 14280/20000, Loss: 0.0000\n",
      "Epoch: 14290/20000, Loss: 0.0005\n",
      "Epoch: 14300/20000, Loss: 0.0003\n",
      "Epoch: 14310/20000, Loss: 0.0000\n",
      "Epoch: 14320/20000, Loss: 0.0000\n",
      "Epoch: 14330/20000, Loss: 0.0000\n",
      "Epoch: 14340/20000, Loss: 0.0002\n",
      "Epoch: 14350/20000, Loss: 0.0001\n",
      "Epoch: 14360/20000, Loss: 0.0000\n",
      "Epoch: 14370/20000, Loss: 0.0000\n",
      "Epoch: 14380/20000, Loss: 0.0000\n",
      "Epoch: 14390/20000, Loss: 0.0000\n",
      "Epoch: 14400/20000, Loss: 0.0004\n",
      "Epoch: 14410/20000, Loss: 0.0001\n",
      "Epoch: 14420/20000, Loss: 0.0000\n",
      "Epoch: 14430/20000, Loss: 0.0000\n",
      "Epoch: 14440/20000, Loss: 0.0002\n",
      "Epoch: 14450/20000, Loss: 0.0000\n",
      "Epoch: 14460/20000, Loss: 0.0000\n",
      "Epoch: 14470/20000, Loss: 0.0000\n",
      "Epoch: 14480/20000, Loss: 0.0000\n",
      "Epoch: 14490/20000, Loss: 0.0000\n",
      "Epoch: 14500/20000, Loss: 0.0005\n",
      "Epoch: 14510/20000, Loss: 0.0001\n",
      "Epoch: 14520/20000, Loss: 0.0000\n",
      "Epoch: 14530/20000, Loss: 0.0000\n",
      "Epoch: 14540/20000, Loss: 0.0003\n",
      "Epoch: 14550/20000, Loss: 0.0001\n",
      "Epoch: 14560/20000, Loss: 0.0001\n",
      "Epoch: 14570/20000, Loss: 0.0000\n",
      "Epoch: 14580/20000, Loss: 0.0000\n",
      "Epoch: 14590/20000, Loss: 0.0002\n",
      "Epoch: 14600/20000, Loss: 0.0001\n",
      "Epoch: 14610/20000, Loss: 0.0000\n",
      "Epoch: 14620/20000, Loss: 0.0000\n",
      "Epoch: 14630/20000, Loss: 0.0000\n",
      "Epoch: 14640/20000, Loss: 0.0001\n",
      "Epoch: 14650/20000, Loss: 0.0002\n",
      "Epoch: 14660/20000, Loss: 0.0001\n",
      "Epoch: 14670/20000, Loss: 0.0000\n",
      "Epoch: 14680/20000, Loss: 0.0000\n",
      "Epoch: 14690/20000, Loss: 0.0001\n",
      "Epoch: 14700/20000, Loss: 0.0001\n",
      "Epoch: 14710/20000, Loss: 0.0001\n",
      "Epoch: 14720/20000, Loss: 0.0000\n",
      "Epoch: 14730/20000, Loss: 0.0000\n",
      "Epoch: 14740/20000, Loss: 0.0001\n",
      "Epoch: 14750/20000, Loss: 0.0003\n",
      "Epoch: 14760/20000, Loss: 0.0001\n",
      "Epoch: 14770/20000, Loss: 0.0001\n",
      "Epoch: 14780/20000, Loss: 0.0000\n",
      "Epoch: 14790/20000, Loss: 0.0000\n",
      "Epoch: 14800/20000, Loss: 0.0001\n",
      "Epoch: 14810/20000, Loss: 0.0001\n",
      "Epoch: 14820/20000, Loss: 0.0001\n",
      "Epoch: 14830/20000, Loss: 0.0000\n",
      "Epoch: 14840/20000, Loss: 0.0001\n",
      "Epoch: 14850/20000, Loss: 0.0002\n",
      "Epoch: 14860/20000, Loss: 0.0000\n",
      "Epoch: 14870/20000, Loss: 0.0004\n",
      "Epoch: 14880/20000, Loss: 0.0002\n",
      "Epoch: 14890/20000, Loss: 0.0001\n",
      "Epoch: 14900/20000, Loss: 0.0000\n",
      "Epoch: 14910/20000, Loss: 0.0000\n",
      "Epoch: 14920/20000, Loss: 0.0003\n",
      "Epoch: 14930/20000, Loss: 0.0002\n",
      "Epoch: 14940/20000, Loss: 0.0001\n",
      "Epoch: 14950/20000, Loss: 0.0000\n",
      "Epoch: 14960/20000, Loss: 0.0000\n",
      "Epoch: 14970/20000, Loss: 0.0000\n",
      "Epoch: 14980/20000, Loss: 0.0000\n",
      "Epoch: 14990/20000, Loss: 0.0001\n",
      "Epoch: 15000/20000, Loss: 0.0000\n",
      "Epoch: 15010/20000, Loss: 0.0000\n",
      "Epoch: 15020/20000, Loss: 0.0000\n",
      "Epoch: 15030/20000, Loss: 0.0000\n",
      "Epoch: 15040/20000, Loss: 0.0007\n",
      "Epoch: 15050/20000, Loss: 0.0002\n",
      "Epoch: 15060/20000, Loss: 0.0001\n",
      "Epoch: 15070/20000, Loss: 0.0000\n",
      "Epoch: 15080/20000, Loss: 0.0000\n",
      "Epoch: 15090/20000, Loss: 0.0000\n",
      "Epoch: 15100/20000, Loss: 0.0000\n",
      "Epoch: 15110/20000, Loss: 0.0001\n",
      "Epoch: 15120/20000, Loss: 0.0001\n",
      "Epoch: 15130/20000, Loss: 0.0001\n",
      "Epoch: 15140/20000, Loss: 0.0000\n",
      "Epoch: 15150/20000, Loss: 0.0000\n",
      "Epoch: 15160/20000, Loss: 0.0004\n",
      "Epoch: 15170/20000, Loss: 0.0002\n",
      "Epoch: 15180/20000, Loss: 0.0001\n",
      "Epoch: 15190/20000, Loss: 0.0000\n",
      "Epoch: 15200/20000, Loss: 0.0000\n",
      "Epoch: 15210/20000, Loss: 0.0000\n",
      "Epoch: 15220/20000, Loss: 0.0001\n",
      "Epoch: 15230/20000, Loss: 0.0001\n",
      "Epoch: 15240/20000, Loss: 0.0000\n",
      "Epoch: 15250/20000, Loss: 0.0000\n",
      "Epoch: 15260/20000, Loss: 0.0000\n",
      "Epoch: 15270/20000, Loss: 0.0001\n",
      "Epoch: 15280/20000, Loss: 0.0005\n",
      "Epoch: 15290/20000, Loss: 0.0001\n",
      "Epoch: 15300/20000, Loss: 0.0001\n",
      "Epoch: 15310/20000, Loss: 0.0000\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 15320/20000, Loss: 0.0000\n",
      "Epoch: 15330/20000, Loss: 0.0000\n",
      "Epoch: 15340/20000, Loss: 0.0000\n",
      "Epoch: 15350/20000, Loss: 0.0001\n",
      "Epoch: 15360/20000, Loss: 0.0001\n",
      "Epoch: 15370/20000, Loss: 0.0001\n",
      "Epoch: 15380/20000, Loss: 0.0002\n",
      "Epoch: 15390/20000, Loss: 0.0001\n",
      "Epoch: 15400/20000, Loss: 0.0000\n",
      "Epoch: 15410/20000, Loss: 0.0000\n",
      "Epoch: 15420/20000, Loss: 0.0006\n",
      "Epoch: 15430/20000, Loss: 0.0001\n",
      "Epoch: 15440/20000, Loss: 0.0000\n",
      "Epoch: 15450/20000, Loss: 0.0000\n",
      "Epoch: 15460/20000, Loss: 0.0000\n",
      "Epoch: 15470/20000, Loss: 0.0002\n",
      "Epoch: 15480/20000, Loss: 0.0001\n",
      "Epoch: 15490/20000, Loss: 0.0001\n",
      "Epoch: 15500/20000, Loss: 0.0000\n",
      "Epoch: 15510/20000, Loss: 0.0000\n",
      "Epoch: 15520/20000, Loss: 0.0000\n",
      "Epoch: 15530/20000, Loss: 0.0000\n",
      "Epoch: 15540/20000, Loss: 0.0004\n",
      "Epoch: 15550/20000, Loss: 0.0002\n",
      "Epoch: 15560/20000, Loss: 0.0001\n",
      "Epoch: 15570/20000, Loss: 0.0000\n",
      "Epoch: 15580/20000, Loss: 0.0000\n",
      "Epoch: 15590/20000, Loss: 0.0000\n",
      "Epoch: 15600/20000, Loss: 0.0001\n",
      "Epoch: 15610/20000, Loss: 0.0000\n",
      "Epoch: 15620/20000, Loss: 0.0012\n",
      "Epoch: 15630/20000, Loss: 0.0003\n",
      "Epoch: 15640/20000, Loss: 0.0001\n",
      "Epoch: 15650/20000, Loss: 0.0000\n",
      "Epoch: 15660/20000, Loss: 0.0000\n",
      "Epoch: 15670/20000, Loss: 0.0000\n",
      "Epoch: 15680/20000, Loss: 0.0001\n",
      "Epoch: 15690/20000, Loss: 0.0001\n",
      "Epoch: 15700/20000, Loss: 0.0000\n",
      "Epoch: 15710/20000, Loss: 0.0000\n",
      "Epoch: 15720/20000, Loss: 0.0000\n",
      "Epoch: 15730/20000, Loss: 0.0000\n",
      "Epoch: 15740/20000, Loss: 0.0000\n",
      "Epoch: 15750/20000, Loss: 0.0000\n",
      "Epoch: 15760/20000, Loss: 0.0000\n",
      "Epoch: 15770/20000, Loss: 0.0001\n",
      "Epoch: 15780/20000, Loss: 0.0003\n",
      "Epoch: 15790/20000, Loss: 0.0001\n",
      "Epoch: 15800/20000, Loss: 0.0001\n",
      "Epoch: 15810/20000, Loss: 0.0000\n",
      "Epoch: 15820/20000, Loss: 0.0000\n",
      "Epoch: 15830/20000, Loss: 0.0000\n",
      "Epoch: 15840/20000, Loss: 0.0000\n",
      "Epoch: 15850/20000, Loss: 0.0000\n",
      "Epoch: 15860/20000, Loss: 0.0002\n",
      "Epoch: 15870/20000, Loss: 0.0000\n",
      "Epoch: 15880/20000, Loss: 0.0001\n",
      "Epoch: 15890/20000, Loss: 0.0000\n",
      "Epoch: 15900/20000, Loss: 0.0000\n",
      "Epoch: 15910/20000, Loss: 0.0000\n",
      "Epoch: 15920/20000, Loss: 0.0002\n",
      "Epoch: 15930/20000, Loss: 0.0001\n",
      "Epoch: 15940/20000, Loss: 0.0000\n",
      "Epoch: 15950/20000, Loss: 0.0000\n",
      "Epoch: 15960/20000, Loss: 0.0000\n",
      "Epoch: 15970/20000, Loss: 0.0000\n",
      "Epoch: 15980/20000, Loss: 0.0003\n",
      "Epoch: 15990/20000, Loss: 0.0001\n",
      "Epoch: 16000/20000, Loss: 0.0001\n",
      "Epoch: 16010/20000, Loss: 0.0000\n",
      "Epoch: 16020/20000, Loss: 0.0000\n",
      "Epoch: 16030/20000, Loss: 0.0000\n",
      "Epoch: 16040/20000, Loss: 0.0000\n",
      "Epoch: 16050/20000, Loss: 0.0000\n",
      "Epoch: 16060/20000, Loss: 0.0000\n",
      "Epoch: 16070/20000, Loss: 0.0000\n",
      "Epoch: 16080/20000, Loss: 0.0002\n",
      "Epoch: 16090/20000, Loss: 0.0006\n",
      "Epoch: 16100/20000, Loss: 0.0002\n",
      "Epoch: 16110/20000, Loss: 0.0001\n",
      "Epoch: 16120/20000, Loss: 0.0000\n",
      "Epoch: 16130/20000, Loss: 0.0000\n",
      "Epoch: 16140/20000, Loss: 0.0001\n",
      "Epoch: 16150/20000, Loss: 0.0000\n",
      "Epoch: 16160/20000, Loss: 0.0000\n",
      "Epoch: 16170/20000, Loss: 0.0000\n",
      "Epoch: 16180/20000, Loss: 0.0000\n",
      "Epoch: 16190/20000, Loss: 0.0007\n",
      "Epoch: 16200/20000, Loss: 0.0002\n",
      "Epoch: 16210/20000, Loss: 0.0001\n",
      "Epoch: 16220/20000, Loss: 0.0000\n",
      "Epoch: 16230/20000, Loss: 0.0000\n",
      "Epoch: 16240/20000, Loss: 0.0000\n",
      "Epoch: 16250/20000, Loss: 0.0000\n",
      "Epoch: 16260/20000, Loss: 0.0000\n",
      "Epoch: 16270/20000, Loss: 0.0001\n",
      "Epoch: 16280/20000, Loss: 0.0001\n",
      "Epoch: 16290/20000, Loss: 0.0002\n",
      "Epoch: 16300/20000, Loss: 0.0002\n",
      "Epoch: 16310/20000, Loss: 0.0000\n",
      "Epoch: 16320/20000, Loss: 0.0000\n",
      "Epoch: 16330/20000, Loss: 0.0000\n",
      "Epoch: 16340/20000, Loss: 0.0002\n",
      "Epoch: 16350/20000, Loss: 0.0001\n",
      "Epoch: 16360/20000, Loss: 0.0000\n",
      "Epoch: 16370/20000, Loss: 0.0000\n",
      "Epoch: 16380/20000, Loss: 0.0000\n",
      "Epoch: 16390/20000, Loss: 0.0001\n",
      "Epoch: 16400/20000, Loss: 0.0001\n",
      "Epoch: 16410/20000, Loss: 0.0001\n",
      "Epoch: 16420/20000, Loss: 0.0000\n",
      "Epoch: 16430/20000, Loss: 0.0000\n",
      "Epoch: 16440/20000, Loss: 0.0000\n",
      "Epoch: 16450/20000, Loss: 0.0000\n",
      "Epoch: 16460/20000, Loss: 0.0002\n",
      "Epoch: 16470/20000, Loss: 0.0001\n",
      "Epoch: 16480/20000, Loss: 0.0001\n",
      "Epoch: 16490/20000, Loss: 0.0000\n",
      "Epoch: 16500/20000, Loss: 0.0000\n",
      "Epoch: 16510/20000, Loss: 0.0000\n",
      "Epoch: 16520/20000, Loss: 0.0002\n",
      "Epoch: 16530/20000, Loss: 0.0001\n",
      "Epoch: 16540/20000, Loss: 0.0000\n",
      "Epoch: 16550/20000, Loss: 0.0000\n",
      "Epoch: 16560/20000, Loss: 0.0000\n",
      "Epoch: 16570/20000, Loss: 0.0004\n",
      "Epoch: 16580/20000, Loss: 0.0001\n",
      "Epoch: 16590/20000, Loss: 0.0000\n",
      "Epoch: 16600/20000, Loss: 0.0000\n",
      "Epoch: 16610/20000, Loss: 0.0000\n",
      "Epoch: 16620/20000, Loss: 0.0001\n",
      "Epoch: 16630/20000, Loss: 0.0001\n",
      "Epoch: 16640/20000, Loss: 0.0003\n",
      "Epoch: 16650/20000, Loss: 0.0001\n",
      "Epoch: 16660/20000, Loss: 0.0000\n",
      "Epoch: 16670/20000, Loss: 0.0001\n",
      "Epoch: 16680/20000, Loss: 0.0001\n",
      "Epoch: 16690/20000, Loss: 0.0000\n",
      "Epoch: 16700/20000, Loss: 0.0000\n",
      "Epoch: 16710/20000, Loss: 0.0000\n",
      "Epoch: 16720/20000, Loss: 0.0003\n",
      "Epoch: 16730/20000, Loss: 0.0003\n",
      "Epoch: 16740/20000, Loss: 0.0001\n",
      "Epoch: 16750/20000, Loss: 0.0000\n",
      "Epoch: 16760/20000, Loss: 0.0000\n",
      "Epoch: 16770/20000, Loss: 0.0000\n",
      "Epoch: 16780/20000, Loss: 0.0001\n",
      "Epoch: 16790/20000, Loss: 0.0000\n",
      "Epoch: 16800/20000, Loss: 0.0000\n",
      "Epoch: 16810/20000, Loss: 0.0000\n",
      "Epoch: 16820/20000, Loss: 0.0001\n",
      "Epoch: 16830/20000, Loss: 0.0004\n",
      "Epoch: 16840/20000, Loss: 0.0002\n",
      "Epoch: 16850/20000, Loss: 0.0001\n",
      "Epoch: 16860/20000, Loss: 0.0000\n",
      "Epoch: 16870/20000, Loss: 0.0000\n",
      "Epoch: 16880/20000, Loss: 0.0000\n",
      "Epoch: 16890/20000, Loss: 0.0000\n",
      "Epoch: 16900/20000, Loss: 0.0001\n",
      "Epoch: 16910/20000, Loss: 0.0000\n",
      "Epoch: 16920/20000, Loss: 0.0000\n",
      "Epoch: 16930/20000, Loss: 0.0000\n",
      "Epoch: 16940/20000, Loss: 0.0005\n",
      "Epoch: 16950/20000, Loss: 0.0001\n",
      "Epoch: 16960/20000, Loss: 0.0000\n",
      "Epoch: 16970/20000, Loss: 0.0000\n",
      "Epoch: 16980/20000, Loss: 0.0000\n",
      "Epoch: 16990/20000, Loss: 0.0001\n",
      "Epoch: 17000/20000, Loss: 0.0001\n",
      "Epoch: 17010/20000, Loss: 0.0001\n",
      "Epoch: 17020/20000, Loss: 0.0003\n",
      "Epoch: 17030/20000, Loss: 0.0001\n",
      "Epoch: 17040/20000, Loss: 0.0001\n",
      "Epoch: 17050/20000, Loss: 0.0000\n",
      "Epoch: 17060/20000, Loss: 0.0000\n",
      "Epoch: 17070/20000, Loss: 0.0000\n",
      "Epoch: 17080/20000, Loss: 0.0002\n",
      "Epoch: 17090/20000, Loss: 0.0001\n",
      "Epoch: 17100/20000, Loss: 0.0001\n",
      "Epoch: 17110/20000, Loss: 0.0001\n",
      "Epoch: 17120/20000, Loss: 0.0003\n",
      "Epoch: 17130/20000, Loss: 0.0001\n",
      "Epoch: 17140/20000, Loss: 0.0002\n",
      "Epoch: 17150/20000, Loss: 0.0000\n",
      "Epoch: 17160/20000, Loss: 0.0000\n",
      "Epoch: 17170/20000, Loss: 0.0001\n",
      "Epoch: 17180/20000, Loss: 0.0000\n",
      "Epoch: 17190/20000, Loss: 0.0001\n",
      "Epoch: 17200/20000, Loss: 0.0002\n",
      "Epoch: 17210/20000, Loss: 0.0000\n",
      "Epoch: 17220/20000, Loss: 0.0001\n",
      "Epoch: 17230/20000, Loss: 0.0001\n",
      "Epoch: 17240/20000, Loss: 0.0001\n",
      "Epoch: 17250/20000, Loss: 0.0002\n",
      "Epoch: 17260/20000, Loss: 0.0000\n",
      "Epoch: 17270/20000, Loss: 0.0001\n",
      "Epoch: 17280/20000, Loss: 0.0003\n",
      "Epoch: 17290/20000, Loss: 0.0001\n",
      "Epoch: 17300/20000, Loss: 0.0000\n",
      "Epoch: 17310/20000, Loss: 0.0000\n",
      "Epoch: 17320/20000, Loss: 0.0001\n",
      "Epoch: 17330/20000, Loss: 0.0001\n",
      "Epoch: 17340/20000, Loss: 0.0000\n",
      "Epoch: 17350/20000, Loss: 0.0000\n",
      "Epoch: 17360/20000, Loss: 0.0000\n",
      "Epoch: 17370/20000, Loss: 0.0004\n",
      "Epoch: 17380/20000, Loss: 0.0002\n",
      "Epoch: 17390/20000, Loss: 0.0000\n",
      "Epoch: 17400/20000, Loss: 0.0000\n",
      "Epoch: 17410/20000, Loss: 0.0000\n",
      "Epoch: 17420/20000, Loss: 0.0000\n",
      "Epoch: 17430/20000, Loss: 0.0001\n",
      "Epoch: 17440/20000, Loss: 0.0003\n",
      "Epoch: 17450/20000, Loss: 0.0001\n",
      "Epoch: 17460/20000, Loss: 0.0001\n",
      "Epoch: 17470/20000, Loss: 0.0000\n",
      "Epoch: 17480/20000, Loss: 0.0000\n",
      "Epoch: 17490/20000, Loss: 0.0001\n",
      "Epoch: 17500/20000, Loss: 0.0002\n",
      "Epoch: 17510/20000, Loss: 0.0001\n",
      "Epoch: 17520/20000, Loss: 0.0000\n",
      "Epoch: 17530/20000, Loss: 0.0000\n",
      "Epoch: 17540/20000, Loss: 0.0001\n",
      "Epoch: 17550/20000, Loss: 0.0005\n",
      "Epoch: 17560/20000, Loss: 0.0002\n",
      "Epoch: 17570/20000, Loss: 0.0001\n",
      "Epoch: 17580/20000, Loss: 0.0000\n",
      "Epoch: 17590/20000, Loss: 0.0000\n",
      "Epoch: 17600/20000, Loss: 0.0001\n",
      "Epoch: 17610/20000, Loss: 0.0000\n",
      "Epoch: 17620/20000, Loss: 0.0000\n",
      "Epoch: 17630/20000, Loss: 0.0000\n",
      "Epoch: 17640/20000, Loss: 0.0000\n",
      "Epoch: 17650/20000, Loss: 0.0005\n",
      "Epoch: 17660/20000, Loss: 0.0001\n",
      "Epoch: 17670/20000, Loss: 0.0001\n",
      "Epoch: 17680/20000, Loss: 0.0000\n",
      "Epoch: 17690/20000, Loss: 0.0000\n",
      "Epoch: 17700/20000, Loss: 0.0001\n",
      "Epoch: 17710/20000, Loss: 0.0001\n",
      "Epoch: 17720/20000, Loss: 0.0000\n",
      "Epoch: 17730/20000, Loss: 0.0000\n",
      "Epoch: 17740/20000, Loss: 0.0000\n",
      "Epoch: 17750/20000, Loss: 0.0001\n",
      "Epoch: 17760/20000, Loss: 0.0001\n",
      "Epoch: 17770/20000, Loss: 0.0006\n",
      "Epoch: 17780/20000, Loss: 0.0002\n",
      "Epoch: 17790/20000, Loss: 0.0001\n",
      "Epoch: 17800/20000, Loss: 0.0000\n",
      "Epoch: 17810/20000, Loss: 0.0000\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 17820/20000, Loss: 0.0001\n",
      "Epoch: 17830/20000, Loss: 0.0002\n",
      "Epoch: 17840/20000, Loss: 0.0000\n",
      "Epoch: 17850/20000, Loss: 0.0000\n",
      "Epoch: 17860/20000, Loss: 0.0000\n",
      "Epoch: 17870/20000, Loss: 0.0000\n",
      "Epoch: 17880/20000, Loss: 0.0002\n",
      "Epoch: 17890/20000, Loss: 0.0001\n",
      "Epoch: 17900/20000, Loss: 0.0000\n",
      "Epoch: 17910/20000, Loss: 0.0000\n",
      "Epoch: 17920/20000, Loss: 0.0001\n",
      "Epoch: 17930/20000, Loss: 0.0003\n",
      "Epoch: 17940/20000, Loss: 0.0001\n",
      "Epoch: 17950/20000, Loss: 0.0001\n",
      "Epoch: 17960/20000, Loss: 0.0000\n",
      "Epoch: 17970/20000, Loss: 0.0000\n",
      "Epoch: 17980/20000, Loss: 0.0001\n",
      "Epoch: 17990/20000, Loss: 0.0000\n",
      "Epoch: 18000/20000, Loss: 0.0001\n",
      "Epoch: 18010/20000, Loss: 0.0001\n",
      "Epoch: 18020/20000, Loss: 0.0002\n",
      "Epoch: 18030/20000, Loss: 0.0001\n",
      "Epoch: 18040/20000, Loss: 0.0000\n",
      "Epoch: 18050/20000, Loss: 0.0001\n",
      "Epoch: 18060/20000, Loss: 0.0005\n",
      "Epoch: 18070/20000, Loss: 0.0003\n",
      "Epoch: 18080/20000, Loss: 0.0001\n",
      "Epoch: 18090/20000, Loss: 0.0000\n",
      "Epoch: 18100/20000, Loss: 0.0000\n",
      "Epoch: 18110/20000, Loss: 0.0000\n",
      "Epoch: 18120/20000, Loss: 0.0001\n",
      "Epoch: 18130/20000, Loss: 0.0000\n",
      "Epoch: 18140/20000, Loss: 0.0000\n",
      "Epoch: 18150/20000, Loss: 0.0002\n",
      "Epoch: 18160/20000, Loss: 0.0001\n",
      "Epoch: 18170/20000, Loss: 0.0000\n",
      "Epoch: 18180/20000, Loss: 0.0000\n",
      "Epoch: 18190/20000, Loss: 0.0001\n",
      "Epoch: 18200/20000, Loss: 0.0002\n",
      "Epoch: 18210/20000, Loss: 0.0001\n",
      "Epoch: 18220/20000, Loss: 0.0000\n",
      "Epoch: 18230/20000, Loss: 0.0000\n",
      "Epoch: 18240/20000, Loss: 0.0001\n",
      "Epoch: 18250/20000, Loss: 0.0001\n",
      "Epoch: 18260/20000, Loss: 0.0001\n",
      "Epoch: 18270/20000, Loss: 0.0000\n",
      "Epoch: 18280/20000, Loss: 0.0001\n",
      "Epoch: 18290/20000, Loss: 0.0003\n",
      "Epoch: 18300/20000, Loss: 0.0001\n",
      "Epoch: 18310/20000, Loss: 0.0000\n",
      "Epoch: 18320/20000, Loss: 0.0000\n",
      "Epoch: 18330/20000, Loss: 0.0000\n",
      "Epoch: 18340/20000, Loss: 0.0001\n",
      "Epoch: 18350/20000, Loss: 0.0002\n",
      "Epoch: 18360/20000, Loss: 0.0001\n",
      "Epoch: 18370/20000, Loss: 0.0000\n",
      "Epoch: 18380/20000, Loss: 0.0000\n",
      "Epoch: 18390/20000, Loss: 0.0003\n",
      "Epoch: 18400/20000, Loss: 0.0001\n",
      "Epoch: 18410/20000, Loss: 0.0000\n",
      "Epoch: 18420/20000, Loss: 0.0000\n",
      "Epoch: 18430/20000, Loss: 0.0000\n",
      "Epoch: 18440/20000, Loss: 0.0002\n",
      "Epoch: 18450/20000, Loss: 0.0002\n",
      "Epoch: 18460/20000, Loss: 0.0000\n",
      "Epoch: 18470/20000, Loss: 0.0000\n",
      "Epoch: 18480/20000, Loss: 0.0001\n",
      "Epoch: 18490/20000, Loss: 0.0001\n",
      "Epoch: 18500/20000, Loss: 0.0000\n",
      "Epoch: 18510/20000, Loss: 0.0000\n",
      "Epoch: 18520/20000, Loss: 0.0000\n",
      "Epoch: 18530/20000, Loss: 0.0003\n",
      "Epoch: 18540/20000, Loss: 0.0004\n",
      "Epoch: 18550/20000, Loss: 0.0002\n",
      "Epoch: 18560/20000, Loss: 0.0000\n",
      "Epoch: 18570/20000, Loss: 0.0000\n",
      "Epoch: 18580/20000, Loss: 0.0000\n",
      "Epoch: 18590/20000, Loss: 0.0001\n",
      "Epoch: 18600/20000, Loss: 0.0000\n",
      "Epoch: 18610/20000, Loss: 0.0000\n",
      "Epoch: 18620/20000, Loss: 0.0000\n",
      "Epoch: 18630/20000, Loss: 0.0001\n",
      "Epoch: 18640/20000, Loss: 0.0003\n",
      "Epoch: 18650/20000, Loss: 0.0001\n",
      "Epoch: 18660/20000, Loss: 0.0001\n",
      "Epoch: 18670/20000, Loss: 0.0000\n",
      "Epoch: 18680/20000, Loss: 0.0001\n",
      "Epoch: 18690/20000, Loss: 0.0000\n",
      "Epoch: 18700/20000, Loss: 0.0000\n",
      "Epoch: 18710/20000, Loss: 0.0000\n",
      "Epoch: 18720/20000, Loss: 0.0001\n",
      "Epoch: 18730/20000, Loss: 0.0002\n",
      "Epoch: 18740/20000, Loss: 0.0001\n",
      "Epoch: 18750/20000, Loss: 0.0000\n",
      "Epoch: 18760/20000, Loss: 0.0000\n",
      "Epoch: 18770/20000, Loss: 0.0000\n",
      "Epoch: 18780/20000, Loss: 0.0000\n",
      "Epoch: 18790/20000, Loss: 0.0002\n",
      "Epoch: 18800/20000, Loss: 0.0003\n",
      "Epoch: 18810/20000, Loss: 0.0001\n",
      "Epoch: 18820/20000, Loss: 0.0000\n",
      "Epoch: 18830/20000, Loss: 0.0000\n",
      "Epoch: 18840/20000, Loss: 0.0000\n",
      "Epoch: 18850/20000, Loss: 0.0000\n",
      "Epoch: 18860/20000, Loss: 0.0000\n",
      "Epoch: 18870/20000, Loss: 0.0003\n",
      "Epoch: 18880/20000, Loss: 0.0004\n",
      "Epoch: 18890/20000, Loss: 0.0002\n",
      "Epoch: 18900/20000, Loss: 0.0001\n",
      "Epoch: 18910/20000, Loss: 0.0000\n",
      "Epoch: 18920/20000, Loss: 0.0000\n",
      "Epoch: 18930/20000, Loss: 0.0000\n",
      "Epoch: 18940/20000, Loss: 0.0000\n",
      "Epoch: 18950/20000, Loss: 0.0000\n",
      "Epoch: 18960/20000, Loss: 0.0000\n",
      "Epoch: 18970/20000, Loss: 0.0005\n",
      "Epoch: 18980/20000, Loss: 0.0001\n",
      "Epoch: 18990/20000, Loss: 0.0001\n",
      "Epoch: 19000/20000, Loss: 0.0000\n",
      "Epoch: 19010/20000, Loss: 0.0000\n",
      "Epoch: 19020/20000, Loss: 0.0000\n",
      "Epoch: 19030/20000, Loss: 0.0000\n",
      "Epoch: 19040/20000, Loss: 0.0000\n",
      "Epoch: 19050/20000, Loss: 0.0002\n",
      "Epoch: 19060/20000, Loss: 0.0001\n",
      "Epoch: 19070/20000, Loss: 0.0000\n",
      "Epoch: 19080/20000, Loss: 0.0000\n",
      "Epoch: 19090/20000, Loss: 0.0000\n",
      "Epoch: 19100/20000, Loss: 0.0005\n",
      "Epoch: 19110/20000, Loss: 0.0001\n",
      "Epoch: 19120/20000, Loss: 0.0001\n",
      "Epoch: 19130/20000, Loss: 0.0000\n",
      "Epoch: 19140/20000, Loss: 0.0000\n",
      "Epoch: 19150/20000, Loss: 0.0000\n",
      "Epoch: 19160/20000, Loss: 0.0000\n",
      "Epoch: 19170/20000, Loss: 0.0001\n",
      "Epoch: 19180/20000, Loss: 0.0000\n",
      "Epoch: 19190/20000, Loss: 0.0000\n",
      "Epoch: 19200/20000, Loss: 0.0001\n",
      "Epoch: 19210/20000, Loss: 0.0001\n",
      "Epoch: 19220/20000, Loss: 0.0001\n",
      "Epoch: 19230/20000, Loss: 0.0000\n",
      "Epoch: 19240/20000, Loss: 0.0000\n",
      "Epoch: 19250/20000, Loss: 0.0004\n",
      "Epoch: 19260/20000, Loss: 0.0001\n",
      "Epoch: 19270/20000, Loss: 0.0001\n",
      "Epoch: 19280/20000, Loss: 0.0000\n",
      "Epoch: 19290/20000, Loss: 0.0000\n",
      "Epoch: 19300/20000, Loss: 0.0001\n",
      "Epoch: 19310/20000, Loss: 0.0000\n",
      "Epoch: 19320/20000, Loss: 0.0000\n",
      "Epoch: 19330/20000, Loss: 0.0001\n",
      "Epoch: 19340/20000, Loss: 0.0007\n",
      "Epoch: 19350/20000, Loss: 0.0023\n",
      "Epoch: 19360/20000, Loss: 0.0009\n",
      "Epoch: 19370/20000, Loss: 0.0003\n",
      "Epoch: 19380/20000, Loss: 0.0008\n",
      "Epoch: 19390/20000, Loss: 0.0005\n",
      "Epoch: 19400/20000, Loss: 0.0002\n",
      "Epoch: 19410/20000, Loss: 0.0001\n",
      "Epoch: 19420/20000, Loss: 0.0001\n",
      "Epoch: 19430/20000, Loss: 0.0001\n",
      "Epoch: 19440/20000, Loss: 0.0001\n",
      "Epoch: 19450/20000, Loss: 0.0001\n",
      "Epoch: 19460/20000, Loss: 0.0001\n",
      "Epoch: 19470/20000, Loss: 0.0004\n",
      "Epoch: 19480/20000, Loss: 0.0002\n",
      "Epoch: 19490/20000, Loss: 0.0001\n",
      "Epoch: 19500/20000, Loss: 0.0001\n",
      "Epoch: 19510/20000, Loss: 0.0000\n",
      "Epoch: 19520/20000, Loss: 0.0000\n",
      "Epoch: 19530/20000, Loss: 0.0006\n",
      "Epoch: 19540/20000, Loss: 0.0001\n",
      "Epoch: 19550/20000, Loss: 0.0000\n",
      "Epoch: 19560/20000, Loss: 0.0001\n",
      "Epoch: 19570/20000, Loss: 0.0000\n",
      "Epoch: 19580/20000, Loss: 0.0000\n",
      "Epoch: 19590/20000, Loss: 0.0000\n",
      "Epoch: 19600/20000, Loss: 0.0002\n",
      "Epoch: 19610/20000, Loss: 0.0001\n",
      "Epoch: 19620/20000, Loss: 0.0001\n",
      "Epoch: 19630/20000, Loss: 0.0000\n",
      "Epoch: 19640/20000, Loss: 0.0000\n",
      "Epoch: 19650/20000, Loss: 0.0001\n",
      "Epoch: 19660/20000, Loss: 0.0000\n",
      "Epoch: 19670/20000, Loss: 0.0000\n",
      "Epoch: 19680/20000, Loss: 0.0001\n",
      "Epoch: 19690/20000, Loss: 0.0001\n",
      "Epoch: 19700/20000, Loss: 0.0001\n",
      "Epoch: 19710/20000, Loss: 0.0000\n",
      "Epoch: 19720/20000, Loss: 0.0000\n",
      "Epoch: 19730/20000, Loss: 0.0010\n",
      "Epoch: 19740/20000, Loss: 0.0001\n",
      "Epoch: 19750/20000, Loss: 0.0001\n",
      "Epoch: 19760/20000, Loss: 0.0000\n",
      "Epoch: 19770/20000, Loss: 0.0000\n",
      "Epoch: 19780/20000, Loss: 0.0000\n",
      "Epoch: 19790/20000, Loss: 0.0000\n",
      "Epoch: 19800/20000, Loss: 0.0000\n",
      "Epoch: 19810/20000, Loss: 0.0000\n",
      "Epoch: 19820/20000, Loss: 0.0000\n",
      "Epoch: 19830/20000, Loss: 0.0003\n",
      "Epoch: 19840/20000, Loss: 0.0001\n",
      "Epoch: 19850/20000, Loss: 0.0000\n",
      "Epoch: 19860/20000, Loss: 0.0000\n",
      "Epoch: 19870/20000, Loss: 0.0000\n",
      "Epoch: 19880/20000, Loss: 0.0001\n",
      "Epoch: 19890/20000, Loss: 0.0001\n",
      "Epoch: 19900/20000, Loss: 0.0000\n",
      "Epoch: 19910/20000, Loss: 0.0000\n",
      "Epoch: 19920/20000, Loss: 0.0000\n",
      "Epoch: 19930/20000, Loss: 0.0000\n",
      "Epoch: 19940/20000, Loss: 0.0009\n",
      "Epoch: 19950/20000, Loss: 0.0003\n",
      "Epoch: 19960/20000, Loss: 0.0001\n",
      "Epoch: 19970/20000, Loss: 0.0001\n",
      "Epoch: 19980/20000, Loss: 0.0000\n",
      "Epoch: 19990/20000, Loss: 0.0000\n",
      "Epoch: 20000/20000, Loss: 0.0000\n"
     ]
    }
   ],
   "source": [
    "# Create RNN instance\n",
    "rnn = RNN(input_size, hidden_size, output_size)\n",
    "\n",
    "# Loss and optimizer\n",
    "criterion = nn.MSELoss()\n",
    "optimizer = torch.optim.Adam(rnn.parameters(), lr=0.01)\n",
    "\n",
    "# Training loop\n",
    "for epoch in range(num_epochs):\n",
    "    # Set initial hidden state\n",
    "    hidden = torch.zeros(1, batch_size, hidden_size)\n",
    "\n",
    "    # Forward pass\n",
    "    output, hidden = rnn(input_tensor, hidden)\n",
    "    loss = criterion(output, target_tensor)\n",
    "\n",
    "    # Backward and optimize\n",
    "    optimizer.zero_grad()\n",
    "    loss.backward()\n",
    "    optimizer.step()\n",
    "\n",
    "    # Print progress\n",
    "    if (epoch+1) % 10 == 0:\n",
    "        print(f'Epoch: {epoch+1}/{num_epochs}, Loss: {loss.item():.4f}')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "a330d1ca",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1, 256)\n",
      "(1, 201)\n",
      "(201, 256)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/data/localhome/tkapoor/.local/lib/python3.8/site-packages/numpy/ma/core.py:2820: ComplexWarning: Casting complex values to real discards the imaginary part\n",
      "  _data = np.array(data, dtype=dtype, copy=copy,\n",
      "/usr/local/lib/python3.8/dist-packages/matplotlib/contour.py:1180: ComplexWarning: Casting complex values to real discards the imaginary part\n",
      "  self.levels = np.asarray(levels_arg).astype(np.float64)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzMAAAFNCAYAAAA0HDEuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABj9ElEQVR4nO29ebwsV1mv/7zd+5wTMSEgiUwJBGVQHNGAKHIZgswSFUFQkCARUVAvFxliuMAPr9coXgUvKB4RA4oMIkiUKASFC8pgoqJMgpExIRpCgICQ5Oze7++PqupdXbuGVVNXVff3+Xz2Z3fNq6uqV62n3jWYuyOEEEIIIYQQU2M2dAKEEEIIIYQQogmSGSGEEEIIIcQkkcwIIYQQQgghJolkRgghhBBCCDFJJDNCCCGEEEKISSKZEUIIIYQQQkwSyYwQQsSY2cfN7D4DHfssM/vb1PSXzOzrhkjLWDGzHzOzNw+dDiGEEONBMiOE2EjM7HvN7J1m9gUzu9rM/s7M7jx0ukJx9+Pd/aNDpyOWrEUsV+m/W/R83NPMzM1sJ5nn7q9w9/v2eVwhhBDTYqd6FSGEmBZmdkPgL4CfBl4DHAbuDlzX4TF23H23q/2NgZLv9C53/961J0gIIYSoQJEZIcQmcnsAd3+luy/c/Svu/mZ3/xcAM/tJM/uQmX3RzD5oZt+R2vbbzexf4ojOq83suHibe5rZZWb2dDP7D+APzOyImT3fzD4d/z3fzI5k1n+KmV1pZleY2WOTg5jZTczsAjO7xsz+Hvj69BeIoxK3jT+fb2YvMrM3xml+j5l9fWrd+5rZh+M0/7aZ/T8zOzu1/Cfi7/s5M3uTmd06c5wnmtm/Af9W90Sb2Z3M7B/jdL3azF5lZv8rXrZSdS7nez3IzP4pPgefMrPnpFZ9e/z/83Ek6LtzquJ9j5ldHH/vi83se1LL3mZmvxRH5L5oZm82s5Pqfj8hhBDjRjIjhNhEPgIszOxlZvYAM7txssDMHgY8B/hx4IbAQ4DPprZ9OHB/4DbAtwJnpZbdDPga4NbA44FzgbsC3w58G3AX4JmZ9U8Ebgk8DnhRKi0vAq4Fbg78RPxXxiOA/w+4MXAp8Mvx9zkJeC1wDnAT4MNAulB/JvCLwA8BJwPvAF6Z2fcPAN8F3LEiDSuY2WHgz4A/JDovfwI8tMYu/ovoOtwIeBDw02b2A/Gy/xb/v1Fc5e5dmWN/DfBG4LeIvvdvAG80s5ukVvtR4LHA1xJF536hRtqEEEJMAMmMEGLjcPdrgO8FHPg94DNxFOSmwNnAr7n7xR5xqbt/IrX5b7n7p939auDPiUQlYQ94trtf5+5fAX4MeK67X+nunyGSjUen1j8WLz/m7hcCXwLuYGZzokL/s9z9v9z9/cDLKr7W69397+NqYK9IpeuBwAfc/XXxst8C/iO13ROAX3H3D8XL/zdR9OnWqXV+xd2vjr9THnc1s8+n/v49mQ8cAp4ff8fXAhdXfI8l7v42d3+fu+/FUbNXAvcI3PxBwL+5+x+6+667vxL4V+D7U+v8gbt/JP5er2H1WgohhNgAJDNCiI0kLryf5e6nAN8M3AJ4PnAq8O8lm6ZF4MvA8anpz7j7tanpWwBpEfpEPC/hs5k2KMn+TiZqs/ipzLZlFKXrFun9uLsDl6XWvTXwgkREgKsBI4oWJXwKwMzunmrg/4HU8ne7+41Sf0kVt1sAl8fHDP0eS8zsu8zsrWb2GTP7ApF4hVYFy5775Njp71V2LYUQQmwAkhkhxMbj7v8KnE8kNZ8i0z6lzq4y058mkoWEW8XzqvgMsEskVultm3AFcEoyYWaWnib6vj+VkZGvcvd3ptZxAHd/R1yl63h3/6bAY98yPmbe9/gv4AaptN0ss/0fAxcAp7r7icCLiURrmaYSsuc+OfblAekWQgixIUhmhBAbh5l9Q9zw/pR4+lTgkcC7gZcAv2Bm32kRt81UuarDK4FnmtnJcduVZwF/VLWRuy+A1wHPMbMbmNkdgcc0TMMbgW8xsx+wqBvjJxK11Ul4MXCOmX0TgJmdGLcb6oJ3EUnZz5nZITP7IaJ2Qwn/DHyTmX27RR0pPCez/QnA1e5+rZndhaiNS8JniKr1FY21cyFwezP7UTPbMbMfIWrz8xetv5UQQojJIJkRQmwiXyRq0P4eM/svIol5P/AUd/8Tosbzfxyv92dEjdeb8L+AS4B/Ad4H/GM8L4QnEVV7+g+iqNEfNEmAu18FPAz4NaKODO4Yp+m6ePnrgV8FXmVm1xCdhwfUPMx328FxZu7s7tcTdSxwFlH1tR8hkrQkbR8Bngu8haintL/N7PdngOea2ReJRPA1qW2/THSd/i6uInfXzPf+LPBg4Cnx934a8OD4fAghhNgSbLWqsxBCiCljZjOiNjM/5u5vHeD45wOXufszq9YVQggh2qLIjBBCTBwzu5+Z3ciiMW5+kajdybsHTpYQQgjRO5IZIYSYPt9N1EPbVURdE/9ASTfLQgghxMagamZCCCGEEEKISaLIjBBCCCGEEGKSSGaEEEIIIYQQk2Rn6ATU4aQTT/Bb3ezkoZNRA1XhE0IIMXWsehUhNpB/+sjHrnL3URc8v3P+1X6NL2pvd6lf9yZ3v38PSVo7k5KZW93sZP7ud3956GQcZG936BQIIYQQ/TKbVJFBiNbc4F4/+omh01DFNb7gBcedVnu7B33lwyd1n5phUM5UhURFCCGEqPc8lPgIIdbExHIbz89M62SakhMhhBCiX7p41kqIhKjEZsb8q+b1N9ygzvs3I6eQoAghhBCbRdmzXaIjhIhRbiCEEEKIaaEqb0IAYHPj0AkNIjNXd5+WodAvXAghhBCbS5X4SHaEmDT6BQshhBBie2lSVT1PgJpWec/uK70fiZYQlehXIoQQQghRhy7b6pbtq+s2wZKjjcNmsHN8g2pmG4TuaiGEEEKIbaCrKJQQI0J3qBBCCCGEyCdEgCQ8YkB09wkhhBBCiOa0HQNQNMeM+aHZ0KkYFN1pQgghhBCiW+pWaZP8iIZst8oJIYQQQojh2dtt/ic6x8xeamZXmtn7C5afaGZ/bmb/bGYfMLPHxvO/3czeFc/7FzP7kdQ2Z5jZP5rZe83sb83stl2kVRoshBBCCCGmyxYLjc1g57heivPnAy8EXl6w/InAB939+83sZODDZvYK4MvAj7v7v5nZLYB/MLM3ufvngd8BznT3D5nZzwDPBM5qm1DJjBBCCCGEEGKJu7/dzE4rWwU4wcwMOB64Gth194+k9vFpM7sSOBn4fLzNDePFJwKf7iKtkhkhhBBCCCEmiJkxP9yo1chJZnZJavqoux+tsf0LgQuIhOQE4EfcfS+TtrsAh4F/j2edDVxoZl8BrgHu2iThWSQzQgghhBBCbBdXufvpLba/H/Be4N7A1wMXmdk73P0aADO7OfCHwGNSkvNk4IHu/h4zeyrwG0SC0wp1ACCEEEIIIYSow2OB13nEpcDHgG8AMLMbAm8EznX3d8fzTga+zd3fE2//auB7ukiIIjNCCCGEEEJMETN2jgxSnP8kcAbwDjO7KXAH4KNmdhh4PfByd39tav3PASea2e3jdjXfB3yoi4RIZoQQQgghhBBLzOyVwD2J2tZcBjwbOATg7i8Gfgk438zeBxjwdHe/ysweBfw34CZmdla8u7Pc/b1m9pPAn5rZHpHc/EQXaZXMCCGEEEIIIZa4+yMrln8auG/O/D8C/qhgm9cTRW06ZXCZMbM5cAlwubs/eOj0CCGEEEIIMQXMYLYzHzoZgzKGDgB+no7qzAkhhBBCCCG2h0FlxsxOAR4EvGTIdAghhBBCCCGmx9DVzJ4PPI1osB0hhBBCCCFEIDYzdo6omtkgmNmDgSvd/R8q1nu8mV1iZpdc9fkvril1QgghhBBCiLEzZGTmbsBDzOyBwHHADc3sj9z9UemV3P0ocBTgO+5wG19/MoUQQgghhBghZswPD13RalgGi8y4+znufoq7nwY8AvibrMgIIYQQQgghRBFj6M1MCCGEEEIIIWoziriUu78NeNvAyRBCCCGEEGIyaJwZRWaEEEIIIYQQE2UUkZlQzB3b3a29ne/sf82i7dPrlK0Xsm2XNPm+Q9DnORBCCCGEECKPrSiBhghBG2mYinD0ybafA8mcEEIIIdaOGTtHtrsMst3fXoiO2GaZk8gJIYQQYihUChFCtGKbRS4EyZ4QQgjRH3rKCiFEj2yD7EnYhBBiGKLezLa7Py89gYQQQrRi04VNsiaEEONFObQQQghRwqbLWhqJmxATw2bMDx8aOhWDolxLCCGEEMDw4iaZEkLURbmGEEIIIUbB0DLVF5I0MTXM7KXAg4Er3f2bc5b/GPB0wIAvAj/t7v8cL7s/8AJgDrzE3c+L598b+HXgMPAPwOPcvfWPXr8uIYQQQogeGZukSa42BzOYHerlep4PvBB4ecHyjwH3cPfPmdkDgKPAd5nZHHgR8H3AZcDFZnYB8K/Ay4Az3P0jZvZc4DHA77dNqO5mIYQQQogtYki5kkhNA3d/u5mdVrL8nanJdwOnxJ/vAlzq7h8FMLNXAWcCnwGud/ePxOtdBJyDZEYIIYQQQkyFdYqUxGltPA74y/jzLYFPpZZdBnwXcBWwY2anu/slwA8Dp3ZxcF1lIYQQQgixcYytel8vmDHbmTfZ8iQzuyQ1fdTdj9Y/vN2LSGa+t2w9d3czewTwm2Z2BHgzsKh7vDwkM0IIIYQQQmwXV7n76W12YGbfCrwEeIC7fzaefTmrEZdT4nm4+7uAu8fb3he4fZvjJ0xPZvY6kbjtYdbI1oUQQgghhMjFzG4FvA54dKodDMDFwO3M7DZEEvMI4Efjbb7W3a+MIzNPB365i7RMT2ZEPSR/Yl1InIUQQoi1YmbMDndfnDezVwL3JKqOdhnwbOAQgLu/GHgWcBPgt80MYNfdT3f3XTN7EvAmoq6ZX+ruH4h3+1QzezAwA37H3f+mi7RKZoQQ3SBxjpDUCSGEmDju/siK5WcDZxcsuxC4MGf+U4GndpLAFJIZIYTokm2WOomcEEKsF4PZfLvzXsmMEEKIbtg2kZO8CSHE4EhmhBBCiCZMVd4kYUKIDUIyI4QQQmwTU5WwUCRrYpvoqQOAKbHd314IIYQQm8UYZE1CJcTakMwIIYQQQnTJGIQqBEmX2AAkM0IIIYQQ28jYpEtyVRszY3bo0NDJGJRpyYw77B4bOhVCrJ+d7c6ohBBCbAFjkCsJ1eSYlswIsa1I4seDxFIIITaXMQiVqIVkRggh6iCxjJDUCSHE8JhhGjRTCCGEqMk2S51ETgghRoNkRgghhKjDNoscSOaEGBFRBwDbXZzf7m8vhBBCiHpMUeYkYEJsLNOSmU3rzUyZqxBCCNE/Uy07qJwgRCXTkplNY6qZq9ADRgghRP9MoZyg5+Hg2I46ABBC1GUKD5hNRw9QIYQYniGfh3oOCCQzQoipIqHsFhUKhBBTQ88BgWRGCCEEqFDQFZJCIcQ6McO2PN+RzAghhBBdse1SuOWFKiHE+pmWzLjDYjF0KkQRWz4CrRBCbD3bIHMSNrElmNn9gRcAc+Al7n5eZvlZwPOAy+NZL3T3l8TLfg14EDADLgJ+3t3dzH4EODfe51+4+9PbpnNaMiPGjUSzHpI/IYSYHlMVNknYZmLWS29mZjYHXgR8H3AZcLGZXeDuH8ys+mp3f1Jm2+8B7gZ8azzrb4F7mNn7iOTnO939M2b2MjM7w93/uk1aJTNCDIXkT0InhBDrYmgJk0xNjbsAl7r7RwHM7FXAmUBWZvJw4DjgMGDAIeA/ga8D/s3dPxOv9xbgoYBkRggxUSR03SExFEKMmXXL1LbIkxnsNCrOn2Rml6Smj7r70dT0LYFPpaYvA74rZz8PNbP/BnwEeLK7f8rd32VmbwWuIJKZF7r7h8zsxsAdzOy0eH8/QCQ8rZDMCCHEJiAxnC4SUSG6Z+hI1Pi5yt1Pb7mPPwde6e7XmdlPAS8D7m1mtwW+ETglXu8iM7u7u7/DzH4aeDWwB7wT+PqWaZiazLhuzk1nW96kCCFEgkS0XySLQjThcuDU1PQp7Df0B8DdP5uafAnwa/HnHwTe7e5fAjCzvwS+G3iHu/85kQRhZo8HWmeAE5MZsfFso6xK4IQQoj82TRYlZyKNGXaol3LExcDtzOw2RBLzCOBHVw9tN3f3K+LJhwAfij9/EvhJM/sVompm9wCeH2/zte5+ZVzl7GeAh7dNqGRGiKGZosBJwIQQYhjGImeSqo3G3XfN7EnAm4i6UX6pu3/AzJ4LXOLuFwA/Z2YPAXaBq4Gz4s1fC9wbeB9RZwB/FUdkAF5gZt8Wf36uu3+kbVolM0KI+kxRwEKQpAkhRBhDSJUEaq24+4XAhZl5z0p9Pgc4J2e7BfBTBft8ZMfJHE5mzOxU4OXATYms7ai7v6BsG3fwsbyRELUwZUBiCmyqpInmSHCFGA/rKANOrLxipjLWkJGZXeAp7v6PZnYC8A9mdlHOYDxiA9gECd32zEKIrUSCK6qQ8G4WG1Be2TYGk5m4wdAV8ecvmtmHiPq0lsyIUTIFIZNwCSHEmpma8Eq+xIYxijYz8eA5dwLeU7qiO35sYplGT/TUc4WYOGMSLomVEEKMkDHIl4SqQ2zrz+fgMmNmxwN/Cvx3d78mZ/njgccDnHqTE9ecuvGyyVInUdsMxiRWWSRaQggxIOsQqi0v4G8Tg8qMmR0iEplXuPvr8tZx96PAUYDvuM0tfY3JEwMxNlGTXG0eYxYtIcR00IuRETOGCNQ6MJtcpwVdM2RvZgb8PvAhd/+NoI3cYXe313T1zs7gwTBRkzHIlYRKCCHGxya8GJGQiakzZMn6bsCjgfeZ2Xvjeb8Y92m9uUxdxoqQpPXKuoVK8iSEENvB0EImmRJtGbI3s78FbKjji44Zk6RJrFqzLnmSNAkhxHbTt0xtvCyZOgCYVqnPHd+dfkg3i+1s+A9t3axLrCRNrVHESWwjY6i6KqaP8rMwho48if5RaWwETFHQJGD0K00SpV4YayFymwolY70GQkyNsf6Wtik/E+NAJSbRiCEEbKsEqmtRkhyNmrEWSoQQoi6qprxmVM1sYjLjjm9LV3sB2JbdvH0K1MaLUpdyJDESYvsYU7vIbUV57wpdSpPEaNrolzFhxiB2myJUXYjSxgtRQttCjR7IQuwjSRChjP1emXDeruj4tJncnTf29iVbU6CN6VOopiZKbe/Nrbl3JENizIy9wCjEWFnHb0f5fz6zLSk/FKC7omMkW93RpShNQYya3DtTup6dIRnabiQbk2Psz8VNZSOfD6oyLXKY1JV0d/aOhd/Is0OT+nprYR0PlTFmoG3EaMwiVOd6jvG6DEKbh6EeftVINkaBBEKM5R4Y7bNnQ/IqN8O3/Nm00d++jvhMjTGLWlcZ6FgywLoiNFb5Cb0uYznvo2Soh1/Rg2pDHsbbzFgKnEL0RV/3uJ5VImG8JWJRyjpEbWhhapoBDp3BhcrPVKVn6PO7lUhaRotkpJoxdFYj2jHG55XaqQ6HmX0N8GrgNODjwMPd/XM56z0GeGY8+b/c/WXx/L8Cbk7kIe8Anujui9D9ZpmWzLhvxUiuNh/HD6wrYVq3FNXN4IbK0Koe8GN8eEDx+dWDQUydbRMTSYYIZR33yrqfeZvzezeYrb04/wzgr939PDN7Rjz99JVURWLybOB0wIF/MLMLYjl5uLtfY2YGvBZ4GPCqkP3mMS2Z2RL6FrZ1y1JTKVqXBIVkaEMU1MseHmMUnbzzKMERY2BzCi2rSEYiNvX69s3Y8ucu7ucxPhs3lDOBe8afXwa8jYPScT/gIne/GsDMLgLuD7zS3a+J19kBDhPJTuh+DzApmYk6ANiczHs20CBNXclS31I0ps4exlb1Ki/TH2Mmnj5vY3twis1i6gXaTRGTqV+HbWLd12odz4Cmv6MxPj9Hzk3d/Yr4838AN81Z55bAp1LTl8XzADCzNwF3Af6SKDoTut8DTEpmNo2+xaxvWWoiRX0JUJX4DCU76yzAZzPxsWXOvruQ0IhOmFKBeSqSMqVz2iXqKGh9jLlzoKn8TnMxw+eNrvVJZnZJavqoux/d3629BbhZznbnpifc3c3Mc9Yrxd3vZ2bHAa8A7g1c1HS/47rTq3Bn7/rpZzyzw+s57W1lqQ8ZChWgrqWn7IHVZ4Y/ZNWrJHMem9QIUZexF7THWBAa+zlLs8lCMSRDn9e+nq0ak60zrnL304sWuvt9ipaZ2X+a2c3d/QozuzlwZc5ql7NfZQzgFKJqY+ljXGtmbyCqXnYRELLfA0xLZjaEvoSsa0lqIkNdCVCV9HQpO0UZ/joy4nWG3SU1YoqMqVA+BmkZ0/kYurDcJ5vQ2dDQnQmNqRMhjcnWORcAjwHOi/+/IWedNwH/28xuHE/fFzjHzI4HToiFZQd4EFGPZqH7PcC0ZMZhbwMymFlfVa1aSFJXIhQiQF0IT9mDpqsMPC8j7lpwtqVNySZ/N9EfQxfch5KXob73GOVkE6RiKIY6d+usWVFEm2f10PlOfQxfv7ieB7zGzB4HfAJ4OICZnQ48wd3PdverzeyXgIvjbZ4bz7spcIGZHQFmwFuBF5ftt4pJyYx3WM1sXVW98uhayLqQozrnte25qxKetrKTl4H3ITh9iM2mFfo35vtMaXRljUnTmnVJzLoKTUNJyhRFZJM6GcpjHR0PjaGTodB7fmztiqaCu38WOCNn/iXA2anplwIvzazzn8Cd6+y3iq29ikO3velSpprIURsBCjl3bb5f0cOkTSbch+D0ITabIDSjTv+UpKQpdb7jyMXHduZrfUvat8T0+V3WISxDysmmS8a6WNd57LsGRh5NnuljjEbWxgyfb3c18mk92d3ZW+ODbdZjoawLmWolDIGZRFPpKft+TdOdlwl3JThdiU1XdXu7FoK+28sMKjDbICh9EXLuBhaedQlNHyLTR7r7KnytQ1TGJiRDv9QcG52+ZB2gA6KhOhgSw6NSQAnrEKc2wlQ3I26SUVVJTxPZKUp3o/RlMsymcpNkgl1IzdjC1n2IzNrkRaIyPGXXYE2ik9xvU6nL3mU6u5SXPoRlnYIi+eiXMXVOVPe+qvPsX2cHQ2I9TKqk4D6ekGBXBdamwtREgvqoHlYmO3VFJy99tdOTygDbvNkZMjPrShS6lJje5GWEsmIDDWbbBh/qjfeaRSd9H45RbLpIUxfPuC6lpQ9ZGUJKNqHzoCHpu2p67jFrPP+77Hxocm29VM1sWjIzJrqUqiZiVEeC6ohPVaZTK3PJyRDaCM46xWYoqWkrDV0ITOfisiZhmaKEdEXb796LDBVd944kZ2zRmrbpaPNMaVv46kpY+pKUsYnIlCJEnfVU2tE1qFMGCD3Pod+x786HxHBMS2Z8j8X146pzmzA/3PxH0He3g1Xi04XsBGcmLQSnrdiMPaNqKhFtBaYTeelYWMYmJkNXO+j7TWGd891afPLulRaC01W0xnYODdIVc5P8v8390EZcuirE9y0nU5KNvlnHuWj7krN03wF5b1e1TsbWpkuEMymZcYe93b1O9jXbmXWyn4S2klVXhkIegKHCUyY7oaLTpopYOnPrU2ySjKpu3dp1FGSbCEUTiWklLh0IS5+SMrRw9Ekf361pgTjkGtYWno6iOG3FZp1CU1dimlyvpoWzNgXgLkVlHQXxdXYqNBXqVmPvsxpZV50V9dEp0VhwwGeb+/wLYdpXsAVdSVERdWWpjgyFik/Zw7KN6DQRnL7FZiyZUd0qg3Xloq7ANJKXFtLShaysTUp67uFt7dQshDc5z8G9BVXcB8Gyk70Xa8hNU7FJfmN9Sk0dkakrMXUFpklBtI2wdCkoQ4vIWNrw5tGmXW8X5zWknNDl+HZt2u922SmRGIZpXSl3dq9bT+axc6TlwJANZClUgKrEJ0R2ijLhkAywieBkM4s6b2TqhJlDQ8mh0Zk6Bb46D486klFHYGrLS01xaSMrnUjKugVkDNGe0IJjV+empBAfeg0rewsquI8qJadhFbUmYtNXlKYPkakjMHVloom4tIrsdCwoYxaOPun7e1c97+pex7pliAPblzz7i+7hNtEcMS6mJTNrpCtpqiNFIQIUIjxlslMlOnkZYF3BqfNGpg+pGeJtSqjIhMpGqMAEy0vP0tJIVLoofA8pG2uQB6Df75j3kK/7vXLSX3U/FBXSG0lOzehNHbGpE6XpcjycLiWmToGsjrg0iui0OD99Fc7H2g53SNq8EC2j7DkZcm+UlS2aVCNrKjnjw9ibbVhNg5pMSmaiNjPDhZWbdIdcR4pCxKdMeJqKTl3BqfNGJvRtS6jUrDOTCS2gh4hMiHSECEyQvASKSx1hqSUrTQr5ba/ruiM2XR5v51DtKmKtSY7X9LynCwEh5yLz/crup7yCfN69Wig4NeQmtEe0dbalCRGZriQmVF5qCVGDZ3QbUelbRvqukr5Ouqr9UUZZeSL0Ohc9U5u2763bpndsveeJaiYlM7izCMxU5z28ne97TJgq8amSnaJMtyoDqys46QypK7EJlZp1C00ZXUhMlcB0JS8h4hIkLHUK8XWvU1NB6Etk1tmg8nDJsfZ6eLC2EajdY+HXNikUVF2jVFqK7sNsIT9YcALkJiRaExKl6TI6k0eVxHQlMEH7qfE9m8hKW0kZQkLWVQ0+oW51+HV0oNRF+9+q+yXv2Vt0PxaVO7oY124suBl76gBgMwmVnibUFaW24dOEsoyyLFPLy8DqCE7XYlMlNWPIUMoK9lXfs1eBqRCXTqQlRA66Fp8mQtIy8/YRDtiZT8U1b9qtcSJQfcgShEvPYlF+/WN5CJGc7P1fKTclYtNUatoITVlUpkxkquSjSmC6kpc60lJXVrooiK9bNvqm7+9TVK6oey2KyhtN2//WafNbp41vk7a9YhxM6kr5nrN7XfsH786RdoWguqIUIj9tx4LJy9TqCE7om5YQsQmRmjZC0zY6U9X4v6nIlElImcD0JS+l0lIlD10IT8g6NYSkkXzM+svifN7Nvm3RrkDiZfnLXsi+V7evlKNQCQqJ/lQJT5nolEjOctDbKrkpEZuqaE1Z1bOuIzRNRaZMYioFqCL9IeJSR1jqFpC7KsgP3SPa0JQ9i5uc47xyR9P2wHXb/4a2+Q0VHHUAMB0mJTNdsW4hCpGfKuGpG0KFgxlRqNy0FZsQqWkrNH2wTolpIjCNxKVMKNrITtnyAEEJEpNAEWkqFT6S6opdpMOKCq0l56ZIog7IUaEQ7a9XKEBV4lMmPGWiUyQ5BYITJDcBYpMVlLIoTZHQzA7tdNKYvYnElG7TUl5CxCVUWJoUoruUkj5rdgxBWfmi6+rzIdeujvDUiep0JThN2kcPi7HX44u7KTCpb99HBwBNb9pQIQqVnqLMs67kdCE3dcWmqdRUCU0fFEVlmohMkZDUFpia8lJbXJqITtGyElEpFZSKjDZESEIL/T6vX2WtyTZjwBbRb7BO+ve3KZHwdGE459pkRWhFgHLlJ1qeKz2H5/myU7ddT4nghMhNiNiUSU0doalDXlSmSErqSkzZ87RMXqrEJURaQoWlyTO/Lxnp4kVoX5SVNdqej7xySOh1yXvG16kyX0dymghOnfY3YrxMSmb6oP9G/eX7r5KdvEyozluWULlpIzYhUtNEaLqOztQVmS4kpo7A1JKXOuJStG5NYSmUlQJRKROUsoJ0VcE8pOBedzTkyXZruXMcs73wAr/tLSrPny2OFa5TJkJLAcpc97T4FEtPgewUiU4oeYKTkZtgsamQmqIoTZ7QdBWdSZMnMnUlpihNZfJSJS5V0lLnGdykUL5OAemjENxVWSOEovJIm46X6vZAFlplPrQtcPbezZZT6vbWKsbJtK5ax4NmthkYs7tG/fn7qfOWJVRuQsQmpCpamdR0LTR1KZKfLkQmT0xqRWECBSZYXkLXy5uXU9ivIytFopJXyC0qGJcVqstkpEo8Qnp1aROSX5f4hEvKkcx21XnkrEwQSgTJSiQn73pG8+eZeQelJxGepexUiU6e5IREcrJyUxC1yRWbGlITIjQhhEZlsiJTR2LqCkyZvJQ9n0OemaGF5qYF9ym+ce8rzfkiEX6svDJK2fWrIzrZtDUVnCq5KYvaTEpqTOPMTOhqdU9XjduKaNLOJSGbqXQhNyFiExqt6Vpo+qSOyLSRmKYC01heGopLrrRkCvd5shIqKrnzCgQjLwMuk5EiCelCcAAWHdQ73rNwMZ95WeHhSMmyVeYtBeagvByJ5xf0GnRAJA4KUF4UKCs9eZEeWywCRSdHctpevpyoTfJ7rZKaKqHJ0iQ601RkQiWmrsAUPUOrCuBV0lKnUN2msL9pvZvlUfwcDz9vTcQnW2apU5U+pIF+SLX5qpolZWLT1yCtm4KZfQ3wauA04OPAw939cznr3Qp4CXAq4MAD3f3jqeW/BfyEux8fT98aeClwMnA18Ch3v6wqPZOSGXdncX2z7hnnh8MGi6qi7Vgw0LQxfzO5qRKbqmhN10LTJ3WqpDUVmSCJ6UpgquSlibhUSEuIsByYzhGFrFzkyUSemNSRmyLxqJKJhVW0Q6shIwf23SJLndP84TmblRcs5r4LOV9rX6ZWxSlPjvJkaFVgjhyQn+w2s8y1zEZ68mQnuSezEZ0VySkSnDrV1EqiNrnRmozUZKM02WpnfYxBUyUyIRJTR2DqyksX0hJa6O5CTJqWL8ZAURmn7nnJl4L6va2G1joJrUpfVYW+Sm5CxWaIsstEeQbw1+5+npk9I55+es56Lwd+2d0vMrPjgeWFMLPTgRtn1v914OXu/jIzuzfwK8CjqxIzKZlpQ5NMqokAFWUcTSQnVG5CxKap1JRVPyurdlYkNEXRmb46A8iLymRFoi+JqRSYtvLSQlyy0lJXWKpkJSsqVevniUmeVOSJSO56JVnbIq9Un+zLZ9G7owrK9tEXcwIb3FpOXmfF2+dJVJ4czT0jKr4gLUFpATogMUvpKReetOxkIztJFCf5vCI5FYJTW27SYlMVrcmRmqIoTXZZnejMAVGpKTIhEhMqME3kpUxcQoSlTqG8SynZvXb4N/Q7x1WXH7oq4zR5YVvnBW3efVAlOFVyU9X2po7YTFFqnPDaBx1yJnDP+PPLgLeRkRkzuyOw4+4XAbj7l1LL5sDzgB8FfjC12R2B/xF/fivwZyGJ2RqZaUJV5lBHduqOAwN12rtUi00XUlM3StNXhCZvjJm8qEwTkQmpUtapxNQRmDJ5aSguZdJSJiBlslIlKmn5yMpJVkzypCQrEnuec+/lyMYiZ71ofsnLgL3wB8TCLXjdOsyt2q7mJZGZueWISY7wZGUnK0XZ/aQlaOYLjs1SYuOryxLpKRKeItnJE5205KQjOXmC05ncJBREa7JSkxel6TJCU0dkmkhMqMAUyUtTcQkRlrqF9iFkZHFsP43zQ+1rhbT9DkUy1KSMU+eFbeh4LlU1T6rkJlRs6ryUrTuo6xZyU3e/Iv78H8BNc9a5PfB5M3sdcBvgLcAz3H0BPAm4wN2vMFt5dv4z8EPAC4gk5wQzu4m7f7YsMZOSGd/rPmMKeeNRRFFGECo5Ie1TEuqKTRupaSI0dVhH25kuRKaNxDQWmJLoSxN5KRKXskhLkbQUrRMqKyvzM1lPWj6ycpIVk7SUZEUkTz7yJCNPYIpkZHev+ve8CFinLfNZecFjp2B5ngwdEJPMOlk5Sq+fFqG0AKXlZ2X9tPTE+01Xe0tkp0p0ZqlrmywvE5xQubHksFViUxCtSaRmpU1NTpSmSGjS0Rmbz5e9q4XSRmSqJCZUYIrkpam4hApLk/JAWjTWwbqOVyZNVeepruyESk6I4FTJTVVHA3XEpmlNk/FjTdt7nmRml6Smj7r70eVezd4C3Cxnu3PTE+7uZrlv3XaAuwN3Aj5J1MbmLDP7S+Bh7Ed20vwC8EIzOwt4O3A5VFdLmJTM9EHTH3kZ2QwgRG6aiE1fUlO2/yKhWXd0Jk1IW5lORaYLiQmMwBQJTBt5qRKXEGmpKyyJkKRFJVRS0oKSFo4DIpORkbSE5MnGYi+7fo705MwrW7+IvRrlmVmNZ+nOLD9qM8+Zn103u05altJilBadValJzU8kJUd68oQnWa9MdNLteRLRWUpMRnByIzgFcpNue2OL3XyxKctScqQmN0pTITR9ECoyXUhMHYFpIy6hwtJWGna/1G17pq7YOT4sOhzy/YuEp+wc55WB8q5ZiOBUyU0bsalTlqmSmmkKTSOucvfTixa6+32KlpnZf5rZzePIys2BK3NWuwx4r7t/NN7mz4C7EkVybgtcGkdlbmBml7r7bd3900SRGeI2Ng91989XfZGtl5kq8n7kdQWnrtyEik2o1FS1qakbpakrNF2SV8XswDoV1bzqiExZNKa1xHQsMHXkJS/iUiUuedKSJyywLy3peXmyUiUq6XlFcpIWjrRgVMlKWjB2FwfFJG/eoqC80KTW0Mq4lA2qOxf97Oez7HpeOp2Wp7TwpGUnmT9fWb4XL9uDRXQPJYKzlJVkOiM7edGdItFJqrCtSs6q4OzLzS57s3kkN7NDzPaO4bP5MnKTFpvVk5YVm1RVtKIsOJGaoihNgdAk1Klulo6+pKuYrcwvEJmyaEyVxIREYYqiL0UCUyYvVeJSR1jWLSfHvhgd79AJ3bZdqPs9yuSn7PyFik5oFKdKbtqITROpqVP9bMuEpikXAI8Bzov/vyFnnYuBG5nZye7+GeDewCXu/kZSER8z+5K73zb+fBJwtbvvAecQ9WxWybRkxr3R25cu6qymCf1xF5H86OtEbNpITUiUpmysmjGTjcq0EZlOojEdS0wTgWkjL3kRlzJxyYu0JNKSF11J5GRlWTwvT1byRCVvXpGYpD8vVtZhhbRY7C6SAnv0P2/Q+jyp2d0N6DkAWCwC2sDMw6I+OzsH1zsgM5mf9k5qhZVbdH5w+0R80gKUyE9WcFanDx2QnRDRmdsexzjEnAXHOBQJTtx5wTE7wpzdZcQmuS+jiE6R3KxGbtJRmyKxSc6ox+ctKFoDB6I0RUKTF51pO4hm1yLTVGLyBKapvIQ865sKSyIefdDXvkMlqeicVEV4sue7S7lpIzZdSU3dGidVg8GOCTdr1QtnQ84DXmNmjwM+ATwclj2UPcHdz3b3hZn9AvDXFoVg/gH4vYr93hP4lbja2tuBJ4YkZpol2JpUZYptZSf9464jNnWlJqT6WdMoTZHQ1I3OdEmdrpaD9hfQ2D93WUE0BgJEpo7EVERh8qqQ5UVgQgSmLPISIi9F4pIXaclGWXaXolItLGWykvzPk5Q8OUlLyco2KQlJi0ZWTrISspvX81PFAzBEZPIok5udnDeI6XnZbRMBSs9PS1EiM8ltuTM3wPZv6Yz0ZIUnT3byRCepyjbfiw4UyUy54CxsHiQ385TEzPaOsTfbWYnazKAyYpMrNXv70Zjl//n8QJSmSGiytOkMoGhgzML1C0SmKhrTpcS0kZc64tKnrAAsvlK9//lXdVu4LPtOIaKTd/7qRHFC5KZKbKq6j+5aasZWptkk4gb5Z+TMvwQ4OzV9EfCtFfs6PvX5tcBr66ZHV47wH20ITcQmVGpCozR9dHEcSl54dqhxZ3LHckmWhVYtC6lW1jAaExqJKZOYsihMSASmSGDqyktdcamSlrzoymK5LP4ui2R6VVaW6+VISv68VCEv9XlVbNLzM+0Ncgphu8cK2hMU1VOrYJYNt6TYOTTPTK+uO09tmyc5ybz8ZZY/PcvKTrROnuikJWdfauJjznwZ2ZnP5iuCE0VwdpibM58tmFvUbfbc9tgjvp9svoz07NmcmS9Y2M7+59kO871IYPbiamfAgapoZRjA3i6+s5MfpakhNGXRmeXxGnQCkFAUlelLZNpKTJnAhMpLG3EJkZIh9l1XhPLOQV3BCY3chHQ00EZqygb5LKt90oXQiOkyqMyY2f2Jul+bAy9x9/OGTE9CV90q7l67WztS08Xgnk1+9NHxx/3Dz7aXqapitrqs+DqUtpGpoo7IBEZjyqqThURi+paYNgJTJS9l4lIlLVlhycpKnqgk89KCkshJWkj2VpZnCoCpZYucqkJFYtOWrMQAzFP3+YrEpNZNxCg9LxGgZJtEbNLCc3CexZ+9UHLmcVRnZx4vS0VxZjO4jn2h2ZkZ1zNnPvO4ilokN3Nz5m4cEBtgzkGxmbO7lJm577I3n8fRmuja7OUITFGua4sFPt9ZidLY7m70W06iNFAqNF2S7ZIZynsMi5YXVy1LUyYyIdGYdUlME3npU1r6IC+9bQSnjth0JTVlZZ+ysk5ToSk+Vng1+ilHZ6oGg950Bvv28YA5LwK+j6jHg4vN7AJ3/+BQacpjcWxvdEIzlh/cWNJRl2BhCW3sD2sVmTrRmC4kpk4UpiwCUyYwIVGXEHnJikuRtJQJSzIvT1LS6y8yBctFVnLyeoRq0S4izTxHzuep+3qeEpX5PC0t8wPbzzNyM5vPlp/zJKdIcNJRnJ0d4zp8KTeLTPQmufY7c2dvDrOZHRCb+cxZ7M3iKmnG3JyFw9yNuc2XVdEWzKIOBRyw6N6ds9ivJ5ZQkY0nnQVAdvyaWGiSbp13dlaFJjpRq0KToio6k0y3bTeTJmSMjLI2MmXjxETLuxeZriVmagJTRfr7NBWbrqVmTEJT1dlR6H7ENKksiZrZHbOCYWb3dPe3tTz2XYBLU122vYpoRNFRyQy0F5qxUfdHP0XKqpitrJftIrnOfqu2zVnu2dbYrFYt259XHJFJ6ENk6lQnK4vE5FUjC5WYsghMWfQlRGASGcmKS3q9rLikpSURlrSoZAXloOTkFyx3a7Z5ANhJ3jBeuz9vnolIzudz+EqyLCUtO3OuvzYWnWuvX0pOIi6LRdx2ZT7j+muPsXMoWj8tN4tDs6XYpOVxZ2fGYrEvNotFFJXZJb4fZh6V5ReR2MznSdsbY3dhy+pou+zfN/ttbaL97hJ3JsAcWMDePBKXZEycKEi0/zn+n1Q9g2hX87jtDLBS7SyZLhUaSFU5S3o7i0Vm5ULlzJsoIVXLQlnHmCubJjF5LL6yaNQm59gXF532ttZWaMbIVF/SbjshV+w1ZvaHwK8Bx8X/Twe+u+Wxbwl8KjV9GfBd2ZXM7PHA4wFuWlKNaMxM8Qe9jYQ2+i+lphyl8QABK2vkH0JVRCaPsp7IyhrzZ6MzcLA6WfQ5Xj/daD9QZMoiMUVRmKIITBuJWV13tRBbJC15VYaq2L2+9iYN2DkwVVx8Te6btNSkum+eW3S9dgx2939WK91Sx7vYXRg7REKTtK3Zv3dmK+PgRPfgYmWsm4XPlp0DLOexsxSa5bzZzsoAnUnnANHn6jY0heQITB9VzTaRPqqWbTpNhSaU3S8tgse4EcPiDNKb2agIKQl9F/CrwDuBE4BXAHfrM1Fp4tFIjwJ8w1fdoFlXQAMzNpHZ9KhMU6KqH/G52d0vefmxY/sD4i0W5VGfpJejAmx3Nzc6A8nb3/x9294Cn83jnpkOxQ2a53EPTeH318wX7NmcObss2Il6iGLOzPbY89lyem57y+jMfLZgsTePq/kYc1uw8Gia2R67cVWgqEqQs9jbL4wmn3f3LGoAji/fxO8u7EA3wotF0qA8/qnH1cvyuiCOv1Fmem85f2dnlt/jWPw/e9bm88MsFnvMD+2wOLbLzqH5Umzm8zmLxYL5oflSbOY786XcJNsk60bfJVm2fz+sik7zfCEbjUkfN0nP8nNO9bNsVCZZP7TK2Wr1stUqaNnqZune0Xbmq72iJe1osp0EZHtAS3o/S3fvvN9+Jun5bI85i+V4NcBKb2fLeXurajZLTc/2jmGpAThXejdb7K9neb2T5URiJDJh7Bw/LxWaQyfMJTQZ+hQZqK5mBt0PeyFEU0KepseIKi18FVFk5mPxYDZtuRw4NTV9SjxvdKzzB9tFBwCiXDrS0hLVWW8YTUmLy2Kx2m4mu3xvsdJuJpq3C7N4sL64qlkiNKujlq+mr0hosvPne7ssZjv7AuO7LGynltDsHzRJc/IdkoLFHGbZ7CDV8DwWmeUpwTg8c/b2WArNahuKKFITVVVKpp3dXZgftqXY7O56vE5cuM30zJVITDR/zmLhHDkSzT9y3M5K1ObwcYcORG2I5x0+LqftzHHJ5c20n/mqw6n1ctrL7C7guCMH5jdhnlPXu6qdTLTOqrSkl2c7BthJVSmr6hAgKzCw3xnAfm9n+wID9SQGiOQl031z0nUzsBSZJDKTiMzc9wffnO/t7o85s3dsKTLpsWkgKzGpa5kWoUR60hKzyJk3AeaHd3LHloGoS9x0VbOdIzuNq5rND80Kq5p1JTRJIX9Tq5u1kZjQKmZdRWTG9iI3hGlWMbOVoRS2kZBvfzHRyJ53Bk4CXmxmD3X3h7U89sXA7czsNkQS8wjgR1vus1O6kJg+fsxj+bGNJR0h7B3bLe3RLKF2dCYvEpOelyM0K9GZGkKTvDEuitCUUthdU8F0tu1Bdj8pqZlbVO1nPl+wcGNnGa1hJVoDME96NJtFVYiyYgMwn8XV2eJDzBfGkcOrnQIcOWxxVbRIcCJR2a9+duTIjN1d58iR+UrVsyNH5rHozJfrJssSstXTos9JwejIge6Vy3o3W87rqGE35Df+h1VBgfwezNLzs437IbwXs2Q6LS7RsoPykizP9mQGxQITLdtbCgywjMREnxfLSAwQJDGQHVBzVWyS35ctji1lJhEZW+wuRWYlKpNIS0lUxpNoXLxdMq5M0jVzMt1V43+A+eFDy04AZjuzZY9maRHJSkqanSPzlU4AqoQmeQmX7gggefZlOwJInqt5UpMUooukJimM15GahCnLzToEJqGriExV2afsxW1Z2aKo0X5RjZOinszU+H+zCCmNPi4eBAfgCuBMM3t02wO7+66ZPQl4E1HJ4qXu/oG2+21LV1GYuhITGpEJEYiyH2lZFbMufvTZMWa6ZG+xWOmeee/63ZXumfeOHSvtnjlNk+hMpdAkpe35PEhoIO4QICU0QNxz0r7QrKQhJTUHKljVkJoD0Roy0RqLozXE0RpbrX4WicucpdLsxSIRt6uZJ21z4oJp0rZmnmpbc4TV3s4O70RRnMOHfKWzgCOH4sjNoajK2RGM3QUciQMh+5IT/9/NGUxz10kiNKvzoGg8maIxZ7LLouV5Y82EB7DTQpTX5XIe2fFkIEdoCgbPTM8vk5WV6ZSwwKq0RNOrUZfkf9Ugmll5AXIjMNH8YoEBGkkMRNU49wVmX2SWVcvSIpONyCT/O4rKlFVNm83nB9palUlJFelts9GZukIT7WN2oGezPqUmoYncpBmD6HRZbawPgYH+JQa6FZm6TOkFrVil8sqlRCY97w+7OLi7Xwhc2MW+mtBH9bEmkZgxi0wXNB0wMysrdclWNSuLzqSFpig6A4ERmqTKWVKoSTcM3jm0XxhKR2kSCUlJzfKYNaUmj2wkJ71hiNhEqyfVeZJxPeKG87HcRJ+T3s/K5QYiwTnMaucBacFJ5pGat5cWlAOdCRzsHQ2SMmay7mpPadExVs9V3sCaecvylu+v12+vTTsFLw3SwhKtZ7nLVubP0uvH/+fp7ZJ5q+unhQXIlZZken9gzH1xAQ5EXqJ1VuUFWGkLk43AAIUCE/1frU6WzEtHYlb/F0gMBItMaFSma9LdO4dEZ6Jl9YQG9ns4S55JVVEaqJYaOCg22UJ2qNwkhLaz6bv9SZ807Z2sTlWysUpMtF03L2inLDLOfmc+28p0r14F62rn0rQaWZ22MW0lJtpHsxu9+E3IOG+dbHQmtO1MNF0iNFCvylk2SgP5UpMXpYFcqaliHncSkGZFXpbzDorNnIPtawBmqdHVk7ffSTe3idwcstT4NIngWKo9ic+B3WWvaNE84/AsXrYUodWuniG/l7Qy2YF84dn/nN42vV76DFl2qJClBK3MK7k8OYGazsh2mpCQ16/ETkZuVnoWT31eEZq5k9QzLBKVaBtfmVcmLNH/g9KyOn9VVtLyko68wKq8AIURmGRe9H8/CgMl1cmgscRAtcikyZsXyuzwDnvXH6wy1oXQAEupSZ4dIVITrZccO/U7zql+tlw/JTfZ53aV3Cz3UVNy0oy5Y4GuulGu2wYmtPwUUv5pIzHQTGTq1jIpSkOfNU1Et4yzRFqE2eC9Z7RtA9O1xEB7kemqTukQP/y60ZtsdCZYaOBAGxqIB8RLCkJZcYHVjgFypWZ/95YqHHt6fs73KOv5DFbFJi0vwIFOA6J5q8uBpdwAK90+zpaFz5ScxIJziGMsmK8IDhbNYxYda3UMm1iQ0qIzSwmHrwpQQp7wRJ9Xz1ae+OQtg1UJWq6zOHj28+btH6NwUScUiQzsi8fqvNUEzTLb58lJ2fx098hZWYk+lwtL9LlYWqL/4eIS/S+XF6A0ChP9D5SY9OeCaAwcFJk0eVGZLtvLZCkTGmClDQ3QSmrS+03vO/vcayo3y+0DJWe5z4qOBaZOmwb7dcpUoeWfPgUm2r6exJTtUyKzGUxLZtZIVw33m/RO1pXERPtqVrWs/G3IcLdNtt1M7joV0Zm6QgMER2kgR2pWBtUIr362TE8NsVkd6G//c4jcRJ/3BWc22z+H6ejObLb/fRLJOcR1KaGJ58eJXbDDIWKRiUUHVse2WczS0pKa76vXeik981W5ya6bXZaWn/195c3LkZeceVXb9E1aMLLs5CzLrj/P9EC3k5nOE5QD82eLA+vMV7pFThV6M8ISfc6XlpV5GUGJPreXl+hzgcBAcSQGwqIxsCIyedXL6kRlVqIwqXYzIdEZOCg0QGmUJlpeLjWwLzbp50WV2ET7DJeb5fYBkgPlbXDqUjX+TR/0MbZLk5fAdcpAIeWcvgQmOn63ZZnpiYyVjhW3DWydzPTdVWCf8gLh0ZKm0ZiqY9T98TdtL1OHkOhME6EByqUmJ0qTHAsyUgPkdhKQR+arhERs8npDiz6vyg1E7W3mmZ7R4GB0Jk9wIExyoEJ0Ul+gSHbg4GCei0yVuUV2uR+8dxd7c7LVibOyU7Rt2fp55ElTW7KikUdaMlbnHyyM5a07z1y7vEjKcjpHUrLz52TEJD5knrBAmLQULc8bFyava+WVapshApP9XCIx0FxkuozKhApNtO7BKA1UR2ogXGzS2+c9O4oiN/vHqZYcCBed3GOUdNQx5kEjh+ptdV1tfKN9jKMcI8bPpGTGZv3LSAhtx4KpG9noSmCg/MdfdayuMoCQLpLbktezWYjQAIVRmmSdsigNFEgNhEVr8iioigarA3CWyQ3QSHAgkpz9z6s9pqUH7NzJWTfhENexyAzumZYdiKqqHcouzzhEti/9Rc6oxwfeUM2SbfPv7awQrS6rV5hJV5drS1YwStfNkZb9ZQcLa2nxSJgFrFckKVAsKsDKQJV5QhJ9rl6neEDLksgLrIwPkyswUB6FycyvIzHR57AG/6GDbBZFZ+Cg0AArbWiAwigNFFc/i9YLE5to+3y5Se+n6JlSJTnRccNEZ2W/1x4Ux6GrrvdFm7JS3TLOumqTQHOBifYtidlUhjeDEdLlwJVNq2TVaa8ylMRE2xWfq76iMnlVzfKiM6FCA7SP0iTs7KwUbtJtaqAiWgMHxSZdFQ1KozYH5Cbu8nk5XSE40fShlUJiWnIAZpnISFpeoundzHSx7Oyvsyo1QKX4LNezg/fmXo7gLNfPy/KWEaKw31xpOL/HZ2KebOSRJyr7y/KjAFkxgVU5Wa6T3V+mK/AiCYmmw9ZNCwvkS0v0uUBcoJ68ZD9DfYmBYJHpIypTJjSQH6WBg1IDBEVrovUOik20z3y5ifZTLDjpfZY9c0JEZzU99aWnLnmSVId1vqRtWr7p4yVs32WX6BjjKr/0gXoz2zCZ6VJC6tKmHUndhvahPZOFdLe87oygKCrT1wBWIUITrRcWpYnmFUgNFEZroIHYBLE6aKddv4AV4agWHKBScqJ55aID1bID1x3oXS1ab/W+2FnOL5YfyJGbWfH9umfzA+tnyZOjKsrkqSl54pCVjSxZ+QjaZ7JtzvhEs72D62cFJZpXvW12uzJhyU7bIrtuoLhAsbxkpw90X5cRkAYSE00Xi0xdDghLZsyZPKEBCqM0cFBqou2KozWQLzbp4+Q9d0IEJ2+fefsPedaWtc+pS7aL6TymICNljOWlKwxbbomOPx2JEftMSmbMbBBh6bLBe5NCe51ulUPHi2mTGUTbj++NRlHbmaZCA/WkZmW9TLQGaooNNJQbDkZvcgQHOCg5sBSdrORE88pFJzsPwOY5BeIcmYF8cSmSn/1t8iWoeH95+yiWozLKxKkteXIRQp6AHFynuMpT0aCrRfvN21eVqOTNywpLNK9YWqBCXKBcXqCWwEC5xEB9kekiKlMlNJAfpckeP51nl0Vr4OCzoUpuov3XE5z9fYeJTvaYbZ7ZeQOBTomuyitNXzB2XV4Ji/A0L69E6Zi2wDhWWl16G5iUzDRl3b1vtYky1B0Pps5gl0NnCutoK1OHIqGBg2kNkZqi9eqKDdSQm6r2NktWIziQJzmQG8lJyIgOHIzo7M8/KDzR/EO5hVvIFx+I2u5nx89JUywt16XWqf+bzIpSlqHu5iLhKF6/XHDK5AYOyslyftF1zJWXAFmBA8ICOdIC1eKSNy/vxUBdgYFKiYnmdReRSZMrKzlCA5RGaWA1j6sjNtF+6svN/rbFEZz941aLzv7x6glPUXoSxjqGWlu6qv0wdBklSkOIBLUTmLGVV0Q507paZoNmNF1WhWo6iOUmZgxdntc60RkoHlSzTGosk94yqYnm1xObJF1pcuWmEwokB3JFBwoiOpBbfS2hSHqiZfnis7+8WICgWILSJN+kTIpCCI32tKVKMKooEpAD65Wc15B18q5nNL9AuApELEhYEkLEBYLkBfIb3VdFYSBMYorWC43KzA4dYi+TlhChSdaDaqmJjhMuNtF+wuUGyO36OUtVJCfNIvWd6j5L0/JTlp5toWlZJKFOmSShXvW00Nom1ZEJCUx3mNnDgOcA3wjcxd0vyVnnVODlwE2JKkofdfcXpJb/LPBEYAG80d2fZmaHgd8FTgf2gJ9397dVpWcrrtwQmdW2ZBBtM4eyNNcZDDOEMqEBCqUmJEoTzU9JSQdiAxVyA91VTcvloOhAtezAqvBAsfRAfsE3r3rbwXXKJejg+uVSFMKMa5f76oO26Wu6r6JzvLpOSQG8JFqUKyrL7WoIS9n8QHGBQHlZ7iNMYqL5YSLTBaFCk6wL+VIDzcQGyuUm2m+54CRURXJW91kd1cmjjfw0IStMbVhHerM0KX+kaVadvs6L2vbiAhskL16/580OeD/wQ0TiUcQu8BR3/0czOwH4BzO7yN0/aGb3As4Evs3drzOzr423+UkAd/+WeN5fmtmd3b208dqkrqTZsG9Rus5U2mQY9TsNGF9GMcS1LBIaaBalSQiJ1pRuky001ZQbqIjedCo5CfmyA2XCA2R61MqKD2TkJyFAgpb7nOfss8H395z7IdpXH1GyfJqk++A+arbPCKjKViopUCwqCWWRxjrSUrFNUXfHdQQG6klM2fp1yYvOQLHQAMFSA+FiA+VyA9WCEx0jM2BrgOjkpbWM7PdoWzhPs7i++rcxhIBAt98zj3ZV6Ju8oA1vB9KlvGx7tC4Ed/8QRG3ZS9a5Argi/vxFM/sQcEvgg8BPA+e5+3Xx8ivjze4I/E0yz8w+TxSl+fuy9ExKZqoYKgPJo6tMpXkjvG7lBcIbyYVkGFXfq+uoTChFQgP5UZrldjWjNelt8rbLi9pAfgGsUnBgzZKTJjW2TgFL8YEC+UmolqDlPkPalQQ04K8tAUPRsMMACJCSleME3Csh1SGr1mkgLVA+TkuhvEChwEC5lDQRmU4HycwRGgiTGigXG6gnN1D8jAiRnP1jhkV00jSVnuI0lPT8N9CzqQv6KqS36821XsP1Oo31JS/jwcxOA+4EvCeedXvg7mb2y8C1wC+4+8XAPwMPMbNXAqcC3xn/3xyZsZlNMuRaRtsf0Rjediz324HEQLXIZMeYqUtZdAaqhQaKv2uR1ETLwsTmwPZ5Ba0WggMBkgNrEJ08quUnYUWCoEKE8ggrVJZJU5/Ukow6BLanWaFOe62QdUPuq4D9NJYXKBUYaCYxfVEUnYHiiAus5pV1xQbqy81yvUDJgVXRiY5Z/XyqE92pIitCURq2r3DbdXvkNgNR1u1drE51sdBrO9QL1SY41nTA5pPMLN3W5ai7H00mzOwtwM1ytjvX3d8QehAzOx74U+C/u/s18ewd4GuAuwJ3Bl5jZl8HvJSoHc4lwCeAd0LJ4GmpnU0Hs8m8Fem2s4BxvvWAbt98jCnzKBMaKI/SQLnURMuLxSa9feE+CqqlLbcvERwoLwQGiQ4MJDtlZMbs6YgD0jRF2hS+m2wbel8E7rvsfl2uUyUv0EpgouUBgtWiepnN54XfNXkB00RqoJ7YFO0nLx/Pi2KESg5UP3OyshOlo35BOStACZvae1nXtJGTNG26Qa7bxqVOOWxM5Y81cpW7n1600N3v0/YAZnaISGRe4e6vSy26DHiduzvw92a2B5zk7p8Bnpza/p3AR6qOs5VXr4p1vpXprk/4ZhnNGN6AQHhG0jYqU4cQoYHyc1IlNdE6+e1rsvtICJIbCBIcWJUcCBQdCCuIJt+pjvR00XPbbnF7nq2jqyhCE3GteewQaYFAcYFKeYFw+ehbZBLKhAbKozRQLTVQLTbp/SzXK5KkgN7JlutWPD+ayE6WPPmB7grjeRSJ0rrp8zuW0cU4LW0a49cts22iuCy8uO3KUFjUoOb3gQ+5+29kFv8ZcC/grWZ2e+AwcJWZ3QAwd/8vM/s+YNfdP1h1rEld0aE7AAihr7c8bTOppplNn29CoHuJGSKTqorSQD2pidYrqQYXIjcQJDgQLjlQXdg8IH+hhdn0920b7QmNLG0jXUXSGp7bUFlZ2SZUXCBIXpb77VBi6uwvhBChgeIoDVRXIVuulx1rK1BuqvZd9iwoapMS+rwpa3fU1QCIRVKUx1AS0ZZ1DBbZRY9hTct9dcsD63xZOnXM7AeB/wucDLzRzN7r7vczs1sAL3H3BwJ3Ax4NvM/M3htv+ovufiFRdbKXmtn7geuBx7i7xz2YvSmO1Fweb1/JpGSmS8YSWu4yE2ybMTXNdPp8K1IncxnybUuI0ECY1ETrhYlNep/765fsO1BwoLwQmSc6EFZYzY12NRWPvHMzqqpvE6BD6WsiK8tt60hLQs12RXWFo4+2MbNDO0GdAFQJTbSv/fs/VGygntxAseDk7TvkOE17JVtu36KAHNoBw9RHhe+Svrow7uLldNPnvsSlHe7+euD1OfM/DTww/vy3QG7IyN2vBx6VM//jwB3qpmccJfpQBh40s4h1vJXpMmNdZzgXmmU2dTOaWoJU0vg/S1VVszShQgPhUhOtGy426X3vb1NxjKICYUnD96qCZ5HsQP0Cb+n57zP6MrZqagNFmtoIyoF9NRGWhIYdIjSJmKy7gX8Ryb0fcg1CxQbqyQ0U58dlkpN3nAPbVx235vOmrBey5T43ZWyRkdFHrZm2LyibCsvUqqE5NsQ4M6NiUlcsqmY2zXBulj7f+gwZ1oX1vimpHUauITJQUZDOoY7QQD2pidavJzbpY6QJOl4DyVkeM6DQWiY8K/tqUZiue/1WGEmBtiu6lJLCY7SRlTQte3JrU+VrHSITGp1JqCM10f7DxQbqVyFbblfx+2orO3XSAt0XqEPkaKoMVWW/S1FoG12ZmrSIYnQlazJk6LnrN0pDhnihXUbUKNpTU2TWie8ugoVmf5v6YpM+Xppaxy4raNboxji04BsqPbnHUJWzTuhMUvLoqAvqLtqsrDMik+TnTaQGmolNQojgQHPJWW4fkMdXCU9VWkIITe+BY468je4QrEMAuqwC1qqMMuIyg1hlWjJjs42ox7qOMHfXmXAXGdi65WW5bcMMqdVb/QbUjdKsbttcbNLH3t9Hw+/ekeikaVqQbiNBm06vclJED+PmdNnovq3I2M68UXqaSA0czJ/qiHtRnthWclb21aHwHNh3zZcUegM/HH22Tenquk5dWtzH2ZvZOtEvPIex1qnt8y3RmEK/0EFd2ZaZ07pFpkuqunoO20fDqmll9CA6ZfRVYB9CkgaRj6b0Ndhnii4lpkuaCg2sPnfqig3k51l1I5Nl+Wao6Cz3FZiHN4madF1AritHm8yQDeP7ks6py4qoZpyl9gLMxisaVWxC/dSV/Xac4XUS+ekgw2orMV3cn02qnOXvp73UrO6vo+hNHlUF4B5kpymTEou+WIOw5DFWiUnTRmgSsvlIE7mB4vysSfXLkPy1rvDAMNXHDqRhwi+vxsY6o2BdS8qUX2JuO+MpIfTIptR7XWsm0dOPutMIUEcZWVcZ2FhF23ePdSY0q/vtUW6yhBaeRyQ9k2cgYcljChKTJv1b6CLtXclNQlme16adWd08uYn8rBxvTc/ErqRpKKZQzW4d0ZPNlRVjd28zOsdqyvjv8DRmkxOTMWUi63j71Mf37SOT6zJT61pi+pCCvoRm9Rj7haBexaaMOgXwbRafEYlKGeuUGNs51EsHANnfQh9yk6ZP0UnTRecaXeTtbYUohDE9x8fIkNW4+hSUsb6gFAeZ1JUys63PVIYKh6+lB5OeMsQ+Mru+MrnBJKBjRiE2VbQt0I9FhiYiJlMgEf4+ezXrQ27SVOVNbWUnoUm+2kfvgmNrD7EOuYLxfe8uWGfkZJNExYGFIjOiD8ZeB3cIKZx6GLnPzG+0Bf4OaNNL26iRRGws6Shm3901F/0u+opKheZjXUlPmq7y5zF3ub6JklHE2KptbZKgiHpM68rb+CVhXYwlQrXujHtdmee6MsV1FfD7rmIWQlcdG4jtoYvG9O3TcPC3s47xaKp+K32flyZ5YB8ClMfYCtGiW4aSEj2fpss4SsQbxlhEoy5Dv1Ea4gG17kxziMxyDCIjRFOS38zQUpOm6De1zkE36+Ql6zp3Xeen65Ij0ZwxR0O2RU7cYbGncWamg9rMFDK0iBQx9Bu0bX3DI4ERm0bfbU26oOp3t07ZSdM0Pxr6HI+5oFxGqIRN9futm6Gfp2L86JfUE2OVi6YMLSV5jOFBMIZMdgriMobzJDaLdbc16YLQ3+pQ0pOly9/tmK9L14zh2TQkU8jvp/DcFOFM6hdnZhsnCX0zRgkpYowPgLFlylPKgMd27sR2MHRbky5o+jsfiwTlMbb8YAr3QQhjO6/rZkrPxD7ZVTUzsS6mJBZNGaOQ5DHmB8AUM+cxn08h0oTeq1Ms7HaVd4xZirpCedZwTPEZJ8bNNEqeCWZbIQTrZioCUsSUHkpTzsSndJ6FaMtU25l0wRD51DYI1FiZ8nOpDnqGbS7TLsVuKFOXiyZMPZPZhIfB1K/BJBjLQJtpNF5Op3T1O9oEKarDJuShoj/0fCrG3dSb2dAJqEPUZmZSSd5oNjVz2bSH6qZep7UwRvnomnV+R4lTMH3/brdNlkS/6DmzXZjZw4DnAN8I3MXdLylY78nA2YAD7wMe6+7XmtkZwPOAGfAl4Cx3v9TMbgW8DLgRMAee4e4XVqVnC57U24UylM2TkSy6xjXZBiGZCn1eC4lSLaaYj2yTgE3x+oyaDX4OOIN0APB+4IeA3y1awcxuCfwccEd3/4qZvQZ4BHA+8DvAme7+ITP7GeCZwFnx/9e4+++Y2R2BC4HTqhKzuVe3AGUQ42TTBSQP3YuBbPBDSHRI3/eJZGlwlGduEcr3R427fwiiGlMV7ABfZWbHgBsAn052Adww/nxiwPzKg0wKZWbrZRslIxTdi4HooSQ2gSHvY4mUGBrl46Im7n65mf068EngK8Cb3f3N8eKzgQvN7CvANcBd4/nPAd5sZj8LfDVwn5Bj6e4cCZKG9SABqYkeYEIMzzb8DjdB2LbhOm0AtoHjFe7tNdrsJDNLt3U56u5Hkwkzewtws5ztznX3N1Tt3MxuDJwJ3Ab4PPAnZvYod/8j4MnAA939PWb2VOA3iATnkcD57v5/zOy7gT80s29299JvOK1fnpkK/RuOZKMD9EAVQkwN5Vsih00UjxFxlbufXrTQ3YOiIiXcB/iYu38GwMxeB3yPmb0J+DZ3f0+83quBv4o/Pw64f3z8d5nZccBJwJVlB1LuIVaQTKwZPcA3Dj18148f0xglQqwD5W+iBp8E7mpmNyCqZnYGcAnwOeBEM7u9u38E+D7gQ6ltzgDON7NvBI4DPlN1IJWkaqCC/hYi2ZgUetBuJ9t63SVx02Zb71vRLe6wu1hvb2Zm9oPA/wVOBt5oZu919/uZ2S2Al7h7UoXstcA/ArvAPxFVZds1s58E/tTM9ojk5ifiXT8F+L24S2cn6rLZq9IzrZKamYRCSDAmhh7YQvSDfltC7GNzlQ/Xhbu/Hnh9zvxPAw9MTT8beHaN7T8I3K1uegYpFZrZ84DvB64H/p1oEJ3PD5EWUYHEYWNRQUgIIcQ6kGiIPhmqpHoRcE4cavpV4Bzg6Z3sWYVvMTEkFUIIIbpE8rA9DFHNbGwMUvJP9TMN8G7gh4M2NJOsiM6QRIipoILJZuCL7RnBfmzoNyTE5jIGM/gJom7ZxIYiaRDrQIUVMXZ0jwrRA1s+ZIcDi2bjzGwMvclMyGA7ZnYuUQ8HryjZz+OBxwOcepMTe0hpt6jgLrYBFcqEEEIUsuWCIdZLbzJTNdiOmZ0FPBg4o6zbtXg00qMA3/F1p7hkQWwjkgchhBClSCDEljJUb2b3B54G3MPdvzxEGsR2IzkQQogtR4V/sQk47G55c7yh2sy8EDgCXGRmAO929ycMlBZRgAr8QmwZKtwJIbYFlXE2hqF6M7ttk+3MVMAWQpSgwrgQQkwXlfFEA8bQm5kQYmgkAUIIIdJILCaBA9ve67tkRogukRQIIYQIRcIgRGskM6I7VJAXQghRBxXmhRAtmZjMmArMQggh+kEFayHExHCH3UXhCCdbwcRkRgghJoQKx0II0R96wS2QzAgh6qDCuRBCiDwkFoPgDru7Q6diWCQzQrRBhXshhBBDIokQW45kZltQoVsIIYRYRSIgxOSZlsyYqVAuhBBC9IkK+EJMisXe0CkYlmnJjBBCCFEXFc6FEGJjkcwIIcRUUKFcCCG6RflqbczsecD3A9cD/w481t0/n7Pex4EvAgtg191Pj+d/DfBq4DTg48DD3f1zZnYi8EfArYgc5dfd/Q+q0iOZEUJ0jx4OQggh2qJnSSVRb2ZrH2fmIuAcd981s18FzgGeXrDuvdz9qsy8ZwB/7e7nmdkz4umnA08EPuju329mJwMfNrNXuPv1ZYmRzIjtQZmiEEIIUY2el6IEd39zavLdwA/X3MWZwD3jzy8D3kYkMw6cYGYGHA9cDVR2PD0tmTHTD0wIIYQQ00RlGLF5/ARRlbE8HHizmTnwu+5+NJ5/U3e/Iv78H8BN488vBC4APg2cAPyIu1d2bzAtmRFCCCHEdiMhEGKJA4tFo2pmJ5nZJanpoynZwMzeAtwsZ7tz3f0N8TrnEkVOXlFwjO9198vN7GuBi8zsX9397Svpd/dYdgDuB7wXuDfw9fE273D3a8q+iGRGCCGE2BYkAkKIiKuSBvl5uPt9yjY2s7OABwNnuHuuTbn75fH/K83s9cBdgLcD/2lmN3f3K8zs5sCV8SaPBc6L93epmX0M+Abg78vSIpkRQgixvahwL4SYMu5r7wDAzO4PPA24h7t/uWCdrwZm7v7F+PN9gefGiy8AHgOcF/9/Qzz/k8AZwDvM7KbAHYCPVqVHMiOEENuGCvBCCCGa80LgCFE1MIB3u/sTzOwWwEvc/YFE7WBeHy/fAf7Y3f8q3v484DVm9jjgE8DD4/m/BJxvZu8DDHh6Tk9oB5DMCCE2CxXUhRBCiN5w99sWzP808MD480eBbytY77NEEZi87e9bNz2SGbHZqGArhBBCiITZfOgUdIp74w4ANoZpyYy6ZhZCCCGEmA4bJg9ifExLZoQQQgghRDGSB7FlSGaEEEIIIUKRLIgR4Q67u5XjSm40khkhhBBCjBOJgxCiAsmMEEIIMUVU0BdCCMmMEEKILUGFfyHEhuHuqmY2dAKEEEIMjAr5QgghJopkRgghQAV6IYQQk0TjzAghthMV3oUQQggxcaYnMyqACSGEEEIIIZiizAghhBBCCCE0zgwwGzoBQgghhBBCCNEERWaEEEIIIcSk8B0VYUWE7gQhhBBCCNEKycUwuDuLxXZXM9OdJ4QQQggxYSQSYpvR3S+EEEII0QBJhBDDo1+hEEIIIdaGBECIDnHYPaZqZkIIIYTYACQKQoi+MbNfAs4E9oArgbPc/dM56/0VcFfgb939wan5rwBOB44Bfw/8lLsfM7OnAj8Wr7YDfCNwsrtfXZYe5XpCCCG2BhX2hRCbhLuze2yx7sM+z93/J4CZ/RzwLOAJeesBNwB+KjP/FcCj4s9/DJwN/I67Py/eBjP7fuDJVSIDkhkhhBAxKugLIYSowt2vSU1+NeAF6/21md0zZ/6FyWcz+3vglJzNHwm8MiQ9enIJIbYeFeKFEEKIcMzsl4EfB74A3KvhPg4BjwZ+PjP/BsD9gSeF7EdPcCG2GBXihRBCiOniwF6zcWZOMrNLUtNH3f1oMmFmbwFulrPdue7+Bnc/FzjXzM4hko5nN0jDbwNvd/d3ZOZ/P/B3IVXMQDIjhAr0QgghhNg2rnL304sWuvt9AvfzCuBCasqMmT0bOJmD7WkAHkFgFTOYmMy4mQqeQgghhBBCDISZ3c7d/y2ePBP415rbnw3cDzjD3fcyy04E7sF+BwGVyAyEEEIIIYSYIsP0Znaemd2BqGvmTxD3ZGZmpwNPcPez4+l3AN8AHG9mlwGPc/c3AS+Ot3uXmQG8zt2fG+/7B4E3u/t/hSZGMiOEEEIIIYQIwt0fWjD/EqJulpPpuxesV+gf7n4+cH6d9MzqrNw1ZvYUM3MzO2nIdAghhBBCCCGmx2CRGTM7Fbgv8Mmh0iCEEEIIIcRUcYdFs97MNoYhIzO/CTyNgoF2hBBCCCGEEKKMQSIzZnYmcLm7/3Pc8EcIIYQQQghRA3dncWx36GQMSm8yUzbYDvCLRFXMQvbzeODxAKd+7U06S58QQgghhBBi2vQmM0WD7ZjZtwC3AZKozCnAP5rZXdz9P3L2cxQ4CvAdd7iNqqQJIYQQQgghgAGqmbn7+4CvTabN7OPA6e5+1brTIoQQQgghxGQZZpyZUTFo18xCCCGEEEII0ZTBB81099OGToMQQgghhBBiegwuM0IIIYQQQoj6OLBYqJqZEEIIIYQQQkwOyYwQQgghhBBikqiamRBCCCGEEBMkGjRT1cyEEEIIIYQQYnIoMiOEEEIIIcQUcVjsKjIjhBBCCCGEEJNDkRkhhBBCCDEtZirCigjdCUIIIYQQYv1ISFoTdQCwO3QyBkV3kRBCCCGE6AYJilgzajMjhBBCCCHqM9s5+Cc2HjP7JTP7FzN7r5m92cxukbPOveLlyd+1ZvYDmXV+y8y+lJr+zdT6HzGzz4ekR3edEEIIIYTYR1IyGdydxWLtvZk9z93/J4CZ/RzwLOAJmXS9Ffj2eJ2vAS4F3pwsN7PTgRtntnlyavnPAncKSYwiM0IIIYQQm0he5CTkT4gS3P2a1ORXA16xyQ8Df+nuXwYwsznwPOBpJds8EnhlSHp0xwohhBBClKECvhArmNkvAz8OfAG4V8XqjwB+IzX9JOACd7/CzPL2fWvgNsDfhKRFv04hhBBCbB8SFLEJuLM4dqzJlieZ2SWp6aPufjSZMLO3ADfL2e5cd3+Du58LnGtm5xDJybPzDmJmNwe+BXhTPH0L4GHAPUvS9gjgte4eVH9Ov2QhhBBCbCYSFiGKuMrdTy9a6O73CdzPK4ALKZAZ4OHA6909Ma47AbcFLo2jMjcws0vd/bapbR4BPDHw+JIZIYQQQkwAiYkQB3B3dq9f7zgzZnY7d/+3ePJM4F9LVn8kcE4y4e5vJBXxMbMvpUXGzL6BqGOAd4WmZ9o5QxcZ2952DzQkhBBCrIXsM7vo+StpEWLsnGdmdwD2gE8Q92QW91D2BHc/O54+DTgV+H819v0I4FXuXtWpwJKJ5RjWfSZXZ38SHyGEECKfus9nSYsQk8TdH1ow/xLg7NT0x4FbVuzr+Mz0c+qmRzlJHaoyXsmOEEKITUXyIcT4cNhb/zgzo0I5U5fkZfQSHCGEEFNGEiOEGDHKofom/RCQ2AghhBBCCNEZVqN9zeCY2ReBDw+djg3jJOCqoROxYeic9oPOa/fonHaPzmn36Jz2g85rNbd295OHTkQZZvZXRNeyLle5+/27Ts8QTE1mLinrE1vUR+e0e3RO+0HntXt0TrtH57R7dE77QedVbAqzoRMghBBCCCGEEE2QzAghhBBCCCEmydRk5ujQCdhAdE67R+e0H3Reu0fntHt0TrtH57QfdF7FRjCpNjNCCCGEEEIIkTC1yIwQQgghhBBCACOVGTO7v5l92MwuNbNn5Cw/Ymavjpe/x8xOGyCZkyLgnP4PM/ugmf2Lmf21md16iHROiapzmlrvoWbmZqZeYyoIOadm9vD4Xv2Amf3xutM4RQJ+/7cys7ea2T/FecADh0jnVDCzl5rZlWb2/oLlZma/FZ/vfzGz71h3GqdIwHn9sfh8vs/M3mlm37buNE6NqnOaWu/OZrZrZj+8rrQJ0RWjkxkzmwMvAh4A3BF4pJndMbPa44DPufttgd8EfnW9qZwWgef0n4DT3f1bgdcCv7beVE6LwHOKmZ0A/DzwnvWmcHqEnFMzux1wDnA3d/8m4L+vO51TI/BefSbwGne/E/AI4LfXm8rJcT5QNj7DA4DbxX+PB35nDWnaBM6n/Lx+DLiHu38L8EuozUcI51N+TpM84leBN68jQUJ0zehkBrgLcKm7f9TdrwdeBZyZWedM4GXx59cCZ5iZrTGNU6PynLr7W939y/Hku4FT1pzGqRFyn0L0wP1V4Np1Jm6ihJzTnwRe5O6fA3D3K9ecxikScl4duGH8+UTg02tM3+Rw97cDV5escibwco94N3AjM7v5elI3XarOq7u/M/nto+dUEAH3KsDPAn8KKD8Vk2SMMnNL4FOp6cviebnruPsu8AXgJmtJ3TQJOadpHgf8Za8pmj6V5zSuWnKqu79xnQmbMCH36e2B25vZ35nZu81sI0Yv7pmQ8/oc4FFmdhlwIVHhRjSnbp4r6qPnVAeY2S2BH0TRQzFhdoZOgBgXZvYo4HTgHkOnZcqY2Qz4DeCsgZOyaewQVd25J9Fb2beb2be4++eHTNQG8EjgfHf/P2b23cAfmtk3u/ve0AkTIouZ3YtIZr536LRsAM8Hnu7ue6rgIqbKGGXmcuDU1PQp8by8dS4zsx2iahGfXU/yJknIOcXM7gOcS1Qn+bo1pW2qVJ3TE4BvBt4WPyBuBlxgZg9x90vWlsppEXKfXga8x92PAR8zs48Qyc3F60niJAk5r48jrlfv7u8ys+OAk1C1k6YE5bmiPmb2rcBLgAe4u5777TkdeFX8nDoJeKCZ7br7nw2aKiFqMMZqZhcDtzOz25jZYaLGqBdk1rkAeEz8+YeBv3ENmFNG5Tk1szsBvws8RO0Qgig9p+7+BXc/yd1Pc/fTiOp3S2TKCfnt/xlRVAYzO4mo2tlH15jGKRJyXj8JnAFgZt8IHAd8Zq2p3CwuAH487tXsrsAX3P2KoRM1dczsVsDrgEe7+0eGTs8m4O63ST2nXgv8jERGTI3RRWbcfdfMngS8CZgDL3X3D5jZc4FL3P0C4PeJqkFcStSw7RHDpXj8BJ7T5wHHA38Sv6H5pLs/ZLBEj5zAcypqEHhO3wTc18w+CCyAp+rtbDmB5/UpwO+Z2ZOJOgM4Sy+IijGzVxJJ9UlxO6NnA4cA3P3FRO2OHghcCnwZeOwwKZ0WAef1WUTtY387fk7turu6vC8h4JwKMXlMzyshhBBCCCHEFBljNTMhhBBCCCGEqEQyI4QQQgghhJgkkhkhhBBCCCHEJJHMCCGEEEIIISaJZEYIIYQQQggxSSQzQgixoZjZjczsZ4ZOhxBCCNEXkhkhhNhcbgRIZoQQQmwskhkhhNhczgO+3szea2bPGzoxQgghRNdo0EwhhNhQzOw04C/c/ZuHTosQQgjRB4rMCCGEEEIIISaJZEYIIYQQQggxSSQzQgixuXwROGHoRAghhBB9IZkRQogNxd0/C/ydmb1fHQAIIYTYRNQBgBBCCCGEEGKSKDIjhBBCCCGEmCSSGSGEEEIIIcQkkcwIIYQQQgghJolkRgghhBBCCDFJJDNCCCGEEEKISSKZEUIIIYQQQkwSyYwQQgghhBBikkhmhBBCCCGEEJPk/wf5h71KuSGMtQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 1080x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import scipy.io\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "# Load the .mat file\n",
    "mat_data = scipy.io.loadmat('NLS.mat')\n",
    "\n",
    "# Following is the code to plot the data u vs x and t. u is 256*100\n",
    "# matrix. Use first 75 columns for training and 25 for testing :)\n",
    "\n",
    "# Access the variables stored in the .mat file\n",
    "# The variable names in the .mat file become keys in the loaded dictionary\n",
    "x = mat_data['x']\n",
    "t = mat_data['tt']\n",
    "u1 = mat_data['uu']\n",
    "\n",
    "# Use the loaded variables as needed\n",
    "print(x.shape)\n",
    "print(t.shape)\n",
    "print(u.shape)\n",
    "\n",
    "X, T = np.meshgrid(x, t)\n",
    "# Define custom color levels\n",
    "c_levels = np.linspace(np.min(u1), np.max(u1), 100)\n",
    "\n",
    "# Plot the contour\n",
    "plt.figure()\n",
    "plt.figure(figsize=(15, 5))\n",
    "plt.contourf(T, X, u1.T, levels=c_levels, cmap='coolwarm')\n",
    "plt.xlabel('t')\n",
    "plt.ylabel('x')\n",
    "plt.title('Schrondinger-Equation')\n",
    "plt.colorbar()  # Add a colorbar for the contour levels\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "aada34db",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([1, 1, 256])\n",
      "torch.Size([1, 40, 256])\n"
     ]
    }
   ],
   "source": [
    "print(test_tensor.shape)\n",
    "prediction_tensor = torch.zeros(1, 40, 256).float()\n",
    "print(prediction_tensor.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "b6257d84",
   "metadata": {},
   "outputs": [],
   "source": [
    "with torch.no_grad():\n",
    "    hidden_pred = torch.zeros(1, batch_size, hidden_size)\n",
    "    prediction, _ = rnn(test_tensor, hidden_pred)\n",
    "    prediction = prediction.view(1, 1, 256).float()\n",
    "    prediction_tensor[:, 0, :] = prediction\n",
    "    for i in range(39):\n",
    "        hidden_pred = torch.zeros(1, batch_size, hidden_size)\n",
    "        prediction, _ = rnn(prediction, hidden_pred)\n",
    "        prediction = prediction.view(1, 1, 256).float()\n",
    "        prediction_tensor[:, i+1, :] = prediction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "0fe309e4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(201, 256)\n"
     ]
    }
   ],
   "source": [
    "# true solution\n",
    "h_true = np.abs(u1)\n",
    "h_true = h_true.T\n",
    "print(h_true.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "023483af",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(40, 256)\n"
     ]
    }
   ],
   "source": [
    "# exact\n",
    "u_test_full = h_true[161:201, :]\n",
    "print(u_test_full.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "67721b1a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([1, 40, 256])"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "k1 = (prediction_tensor - u_test_full)**2\n",
    "u_test_full_tensor = torch.tensor(u_test_full**2)\n",
    "prediction_tensor.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "1687faef",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Relative Error Test:  0.002873593831044273 %\n"
     ]
    }
   ],
   "source": [
    "# Compute the relative L2 error norm (generalization error)\n",
    "relative_error_test = torch.mean(k1)/ torch.mean(u_test_full_tensor)\n",
    "\n",
    "print(\"Relative Error Test: \", relative_error_test.item(), \"%\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "3520a361",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor(0.1441, dtype=torch.float64)\n"
     ]
    }
   ],
   "source": [
    "R_abs = torch.max(prediction_tensor-u_test_full)\n",
    "print(R_abs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "445dda92",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Explained Variance Score: 0.9947212325620218\n"
     ]
    }
   ],
   "source": [
    "import torch\n",
    "\n",
    "a = prediction_tensor\n",
    "b = u_test_full\n",
    "# Assuming 'a' is your predicted values (model's predictions) and 'b' is the true values (ground truth)\n",
    "# Make sure 'a' and 'b' are PyTorch tensors\n",
    "b = torch.tensor(b)\n",
    "# Calculate the mean of 'b'\n",
    "mean_b = torch.mean(b)\n",
    "\n",
    "# Calculate the Explained Variance Score\n",
    "numerator = torch.var(b - a)  # Variance of the differences between 'b' and 'a'\n",
    "denominator = torch.var(b)    # Variance of 'b'\n",
    "evs = 1 - numerator / denominator\n",
    "\n",
    "print(\"Explained Variance Score:\", evs.item())\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "c567031c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor(0.0249, dtype=torch.float64)\n"
     ]
    }
   ],
   "source": [
    "R_mean = torch.mean(torch.abs(prediction_tensor - u_test_full))\n",
    "print(R_mean)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "2ce3f07b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(256, 201)"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "prediction_tensor = torch.squeeze(prediction_tensor)\n",
    "h = np.abs(u1)\n",
    "h.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "a2d5c775",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(256, 1)\n",
      "(256, 1)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import torch\n",
    "\n",
    "# Create the figure and axis objects with reduced width\n",
    "fig, ax = plt.subplots(figsize=(5, 5))  # You can adjust the width (7 inches) and height (5 inches) as needed\n",
    "\n",
    "# # Make sure the font is Times Roman\n",
    "# plt.rcParams['font.family'] = 'Times New Roman'\n",
    "\n",
    "# # Perform the prediction\n",
    "# with torch.no_grad():\n",
    "#     prediction = lem(test_tensor)\n",
    "\n",
    "final_time_output = prediction_tensor[-38, :]\n",
    "final_out = final_time_output.detach().numpy().reshape(-1, 1)\n",
    "final_true = h[:, -38].reshape(-1, 1)\n",
    "print(final_out.shape)\n",
    "print(final_true.shape)\n",
    "\n",
    "# Plot the data with red and blue lines, one with dotted and one with solid style\n",
    "ax.plot(x.T, final_out, color='red', linestyle='dotted', linewidth=12, label='Prediction')\n",
    "ax.plot(x.T, final_true, color='blue', linestyle='solid', linewidth=7, label='True')\n",
    "\n",
    "# Set the axis labels with bold font weight\n",
    "ax.set_xlabel(r\"${x}$\", fontsize=26, color='black', fontdict={'weight': 'bold'})\n",
    "ax.set_ylabel(r\"${|u(x, t)|}$\", fontsize=26, color='black', fontdict={'weight': 'bold'})\n",
    "\n",
    "# Set the title with bold font weight\n",
    "ax.set_title(r\"${t = 1.28}$\", fontsize=26, color='black', fontweight='bold')\n",
    "\n",
    "# Set the number of ticks for x-axis and y-axis to 3\n",
    "ax.set_xticks([-5, 0, 5])\n",
    "ax.set_yticks([0, 2, 4])\n",
    "\n",
    "# Set tick labels fontweight to bold and increase font size\n",
    "ax.tick_params(axis='both', which='major', labelsize=20, width=2, length=10)\n",
    "\n",
    "# # Set the fontweight for tick labels to bold\n",
    "# for tick in ax.get_xticklabels() + ax.get_yticklabels():\n",
    "#     tick.set_weight('bold')\n",
    "\n",
    "# Set the spines linewidth to bold\n",
    "ax.spines['top'].set_linewidth(2)\n",
    "ax.spines['right'].set_linewidth(2)\n",
    "ax.spines['bottom'].set_linewidth(2)\n",
    "ax.spines['left'].set_linewidth(2)\n",
    "\n",
    "\n",
    "# Increase font size for x and y axis numbers\n",
    "ax.tick_params(axis='both', which='major', labelsize=24)\n",
    "\n",
    "# Set the legend\n",
    "# ax.legend()\n",
    "\n",
    "plt.savefig('RNN_1.28_20.pdf', dpi=500, bbox_inches=\"tight\")\n",
    "\n",
    "# Show the plot\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "18a30486",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(256, 1)\n",
      "(256, 1)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import torch\n",
    "\n",
    "# Create the figure and axis objects with reduced width\n",
    "fig, ax = plt.subplots(figsize=(5, 5))  # You can adjust the width (7 inches) and height (5 inches) as needed\n",
    "\n",
    "# # Make sure the font is Times Roman\n",
    "# plt.rcParams['font.family'] = 'Times New Roman'\n",
    "\n",
    "# # Perform the prediction\n",
    "# with torch.no_grad():\n",
    "#     prediction = lem(test_tensor)\n",
    "\n",
    "\n",
    "final_time_output = prediction_tensor[-3, :]\n",
    "final_out = final_time_output.detach().numpy().reshape(-1, 1)\n",
    "final_true = h[:, -3].reshape(-1, 1)\n",
    "print(final_out.shape)\n",
    "print(final_true.shape)\n",
    "\n",
    "# Plot the data with red and blue lines, one with dotted and one with solid style\n",
    "ax.plot(x.T, final_out, color='red', linestyle='dotted', linewidth=12, label='Prediction')\n",
    "ax.plot(x.T, final_true, color='blue', linestyle='solid', linewidth=7, label='True')\n",
    "\n",
    "# Set the axis labels with bold font weight\n",
    "ax.set_xlabel(r\"${x}$\", fontsize=26, color='black', fontdict={'weight': 'bold'})\n",
    "ax.set_ylabel(r\"${u(x, t)}$\", fontsize=26, color='black', fontdict={'weight': 'bold'})\n",
    "\n",
    "# Set the title with bold font weight\n",
    "ax.set_title(r\"${t = 1.5}$\", fontsize=26, color='black', fontweight='bold')\n",
    "\n",
    "# Set the number of ticks for x-axis and y-axis to 3\n",
    "ax.set_xticks([-5, 0, 5])\n",
    "ax.set_yticks([0, 2, 4])\n",
    "\n",
    "# Set tick labels fontweight to bold and increase font size\n",
    "ax.tick_params(axis='both', which='major', labelsize=20, width=2, length=10)\n",
    "\n",
    "# # Set the fontweight for tick labels to bold\n",
    "# for tick in ax.get_xticklabels() + ax.get_yticklabels():\n",
    "#     tick.set_weight('bold')\n",
    "\n",
    "# Set the spines linewidth to bold\n",
    "ax.spines['top'].set_linewidth(2)\n",
    "ax.spines['right'].set_linewidth(2)\n",
    "ax.spines['bottom'].set_linewidth(2)\n",
    "ax.spines['left'].set_linewidth(2)\n",
    "\n",
    "\n",
    "# Increase font size for x and y axis numbers\n",
    "ax.tick_params(axis='both', which='major', labelsize=24)\n",
    "\n",
    "# Set the legend\n",
    "# ax.legend()\n",
    "\n",
    "plt.savefig('RNN_1.5_20.pdf', dpi=500, bbox_inches=\"tight\")\n",
    "\n",
    "# Show the plot\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "2521282d",
   "metadata": {},
   "outputs": [],
   "source": [
    "conc_u = torch.squeeze(input_tensor)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "1374d9aa",
   "metadata": {},
   "outputs": [],
   "source": [
    "concatenated_tensor = torch.cat((conc_u, prediction_tensor), dim=0)\n",
    "\n",
    "t1 = np.linspace(0, 1.5707 , 200)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "c81d0bb4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import torch\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.ticker import FixedLocator\n",
    "\n",
    "# Assuming you have defined concatenated_tensor as a PyTorch tensor\n",
    "# concatenated_tensor = torch.cat((tensor1, tensor2), dim=0)\n",
    "\n",
    "# Convert concatenated_tensor to a NumPy array\n",
    "concatenated_array = concatenated_tensor.numpy()\n",
    "\n",
    "# Define custom color levels\n",
    "x = np.linspace(0, 1, concatenated_array.shape[1])  # Replace 0 and 1 with your actual x range\n",
    "t = np.linspace(0, 1, concatenated_array.shape[0])  # Replace 0 and 1 with your actual t range\n",
    "X, T = np.meshgrid(x, t1)\n",
    "\n",
    "# Define custom color levels using the minimum and maximum from the NumPy array\n",
    "c_levels = np.linspace(np.min(concatenated_array), np.max(concatenated_array), 400)\n",
    "\n",
    "# Plot the contour with interpolated data\n",
    "plt.figure(figsize=(20, 5))\n",
    "plt.pcolormesh(T, X, concatenated_array, shading='auto', cmap='twilight')\n",
    "\n",
    "# Set the fontweight for axis labels to regular (not bold)\n",
    "plt.xlabel(\"$t$\", fontsize=26)\n",
    "plt.ylabel(\"$x$\", fontsize=26)\n",
    "plt.title(\"$|u(x, t)|$\", fontsize=26)\n",
    "\n",
    "# Set tick labels fontweight to regular (not bold) and increase font size\n",
    "plt.tick_params(axis='both', which='major', labelsize=20, width=3, length=10)\n",
    "\n",
    "# Set the fontweight for tick labels to regular (not bold)\n",
    "for tick in plt.gca().get_xticklabels() + plt.gca().get_yticklabels():\n",
    "    tick.set_weight('normal')\n",
    "\n",
    "# Set the number of ticks for x-axis and y-axis to 5\n",
    "num_ticks = 5\n",
    "x_ticks = np.linspace(np.min(T), np.max(T), num_ticks)\n",
    "y_ticks = np.linspace(np.min(X), np.max(X), num_ticks)\n",
    "\n",
    "plt.gca().xaxis.set_major_locator(FixedLocator(x_ticks))\n",
    "plt.gca().yaxis.set_major_locator(FixedLocator(y_ticks))\n",
    "\n",
    "cbar1 = plt.colorbar()\n",
    "# Set the number of ticks for the color bar with uniformly distributed numbers\n",
    "num_ticks = 5\n",
    "c_ticks = np.linspace(np.min(concatenated_array), np.max(concatenated_array), num_ticks)\n",
    "cbar1.set_ticks(c_ticks)\n",
    "\n",
    "# Set the fontweight and fontsize for color bar tick labels\n",
    "for t in cbar1.ax.get_yticklabels():\n",
    "    t.set_weight('normal')\n",
    "    t.set_fontsize(26)  # Increase the font size for color bar tick labels\n",
    "\n",
    "# Increase the size of numbers on axis and color bar\n",
    "plt.xticks(fontsize=26)\n",
    "plt.yticks(fontsize=26)\n",
    "\n",
    "# Increase the tick size and width of the color bar\n",
    "cbar1.ax.tick_params(axis='both', which='major', labelsize=30, width=3,  length=10)\n",
    "\n",
    "# Add a dotted line at t = 0.8\n",
    "plt.axvline(x=1.26449, color='black', linestyle='dotted', linewidth=5)\n",
    "\n",
    "#plt.savefig('Contour_LEM_20.pdf', dpi=500, bbox_inches=\"tight\")\n",
    "plt.savefig('contour_RNN_20.jpeg', dpi=500, bbox_inches=\"tight\")\n",
    "# Show the plot\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d6d77eff",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4cff7a40",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "pytorch",
   "language": "python",
   "name": "pytorch"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
